Issue 1:
As discussed in #14384 (comment).

A small, complete example of the issue

import pandas as pd
df1 = pd.DataFrame({'a': [1, 2, 3]})
df2 = pd.DataFrame({'b': [2,3,4]})
df = pd.concat([df1, df1, df2], axis=1).to_sparse()
df.index = [1, 2, 3]
df.loc[1, 'a'] = 3

errors with

AttributeError Traceback (most recent call last)
<ipython-input-6-0a670748626a> in <module>()
4 df = pd.concat([df1, df1, df2], axis=1).to_sparse()
5 df.index = [1, 2, 3]
----> 6 df.loc[1, 'a'] = 3

/Users/bkandel/.virtualenvs/pandas_19/lib/python2.7/site-packages/pandas/core/indexing.pyc in __setitem__(self, key, value)
138 key = com._apply_if_callable(key, self.obj)
139 indexer = self._get_setitem_indexer(key)
--> 140 self._setitem_with_indexer(indexer, value)
141
142 def _has_valid_type(self, k, axis):

/Users/bkandel/.virtualenvs/pandas_19/lib/python2.7/site-packages/pandas/core/indexing.pyc in _setitem_with_indexer(self, indexer, value)
545 # scalar
546 for item in labels:
--> 547 setter(item, value)
548
549 else:

/Users/bkandel/.virtualenvs/pandas_19/lib/python2.7/site-packages/pandas/core/indexing.pyc in setter(item, v)
453
454 def setter(item, v):
--> 455 s = self.obj[item]
456 pi = plane_indexer[0] if lplane_indexer == 1 else plane_indexer
457

/Users/bkandel/.virtualenvs/pandas_19/lib/python2.7/site-packages/pandas/sparse/frame.pyc in __getitem__(self, key)
345 return self._getitem_array(key)
346 else:
--> 347 return self._get_item_cache(key)
348
349 @Appender(DataFrame.get_value.__doc__, indents=0)

/Users/bkandel/.virtualenvs/pandas_19/lib/python2.7/site-packages/pandas/core/generic.pyc in _get_item_cache(self, item)
1385 if res is None:
1386 values = self._data.get(item)
-> 1387 res = self._box_item_values(item, values)
1388 cache[item] = res
1389 res._set_as_cached(item, self)

/Users/bkandel/.virtualenvs/pandas_19/lib/python2.7/site-packages/pandas/core/frame.pyc in _box_item_values(self, key, values)
2392 items = self.columns[self.columns.get_loc(key)]
2393 if values.ndim == 2:
-> 2394 return self._constructor(values.T, columns=items, index=self.index)
2395 else:
2396 return self._box_col_values(values, items)

AttributeError: 'BlockManager' object has no attribute 'T'

Expected Output

a a b
1 3 3 2
2 2 2 3
3 3 3 4

Output of pd.show_versions()

## INSTALLED VERSIONS

commit: None

python: 2.7.10.final.0

python-bits: 64

OS: Darwin

OS-release: 14.5.0

machine: x86_64

processor: i386

byteorder: little

LC_ALL: None

LANG: None

LOCALE: None.None

pandas: 0.19.0

nose: None

pip: 8.1.2

setuptools: 28.3.0

Cython: None

numpy: 1.11.2

scipy: None

statsmodels: None

xarray: None

IPython: 5.1.0

sphinx: None

patsy: None

dateutil: 2.5.3

pytz: 2016.7

blosc: None

bottleneck: None

tables: None

numexpr: None

matplotlib: None

openpyxl: None

xlrd: None

xlwt: None

xlsxwriter: None

lxml: None

bs4: None

html5lib: None

httplib2: None

apiclient: None

sqlalchemy: None

pymysql: None

psycopg2: None

jinja2: None

boto: None

pandas_datareader: None

Issue 2:
The following code:

import pandas as pd
p1 = {'name': 'willy', 'age': 10}
p2 = {'name': 'willy', 'age': 11}
p3 = {'name': 'zoe', 'age': 10}
df = pd.DataFrame([p1, p2, p3])
df = df[['name','name','age']]
df.groupby('name')

gives the following error:

TypeError: 'DataFrame' object is not callable

Instead, it should say "Cannot groupby a column which exists more than once"