@@ -2003,7 +2003,11 @@ def __getitem__(self, key):
2003
2003
return self ._getitem_multilevel (key )
2004
2004
else :
2005
2005
# get column
2006
- return self ._get_item_cache (key )
2006
+ if self .columns .is_unique :
2007
+ return self ._get_item_cache (key )
2008
+
2009
+ # duplicate columns
2010
+ return self ._constructor (self ._data .get (key ))
2007
2011
2008
2012
def _getitem_slice (self , key ):
2009
2013
return self ._slice (key , axis = 0 )
@@ -2162,10 +2166,10 @@ def _set_item(self, key, value):
2162
2166
value = self ._sanitize_column (key , value )
2163
2167
NDFrame ._set_item (self , key , value )
2164
2168
2165
- def insert (self , loc , column , value ):
2169
+ def insert (self , loc , column , value , allow_duplicates = False ):
2166
2170
"""
2167
- Insert column into DataFrame at specified location. Raises Exception if
2168
- column is already contained in the DataFrame
2171
+ Insert column into DataFrame at specified location.
2172
+ if allow_duplicates is False, Raises Exception if column is already contained in the DataFrame
2169
2173
2170
2174
Parameters
2171
2175
----------
@@ -2175,7 +2179,7 @@ def insert(self, loc, column, value):
2175
2179
value : int, Series, or array-like
2176
2180
"""
2177
2181
value = self ._sanitize_column (column , value )
2178
- self ._data .insert (loc , column , value )
2182
+ self ._data .insert (loc , column , value , allow_duplicates = allow_duplicates )
2179
2183
2180
2184
def _sanitize_column (self , key , value ):
2181
2185
# Need to make sure new columns (which go into the BlockManager as new
0 commit comments