@@ -1111,6 +1111,8 @@ def __setitem__(self, key, value):
1111
1111
'DataFrame objects' )
1112
1112
1113
1113
self ._boolean_set (key , value )
1114
+ elif isinstance (key , (np .ndarray , list )):
1115
+ return self ._set_item_multiple (key , value )
1114
1116
else :
1115
1117
# set column
1116
1118
self ._set_item (key , value )
@@ -1129,6 +1131,28 @@ def _boolean_set(self, key, value):
1129
1131
else :
1130
1132
self .values [mask ] = value
1131
1133
1134
+ def _set_item_multiple (self , keys , value ):
1135
+ if isinstance (value , DataFrame ):
1136
+ assert (len (value .columns ) == len (keys ))
1137
+ for k1 , k2 in zip (keys , value .columns ):
1138
+ self [k1 ] = value [k2 ]
1139
+ else :
1140
+ self .ix [:, keys ] = value
1141
+
1142
+ def _set_item (self , key , value ):
1143
+ """
1144
+ Add series to DataFrame in specified column.
1145
+
1146
+ If series is a numpy-array (not a Series/TimeSeries), it must be the
1147
+ same length as the DataFrame's index or an error will be thrown.
1148
+
1149
+ Series/TimeSeries will be conformed to the DataFrame's index to
1150
+ ensure homogeneity.
1151
+ """
1152
+ value = self ._sanitize_column (value )
1153
+ value = np .atleast_2d (value )
1154
+ NDFrame ._set_item (self , key , value )
1155
+
1132
1156
def insert (self , loc , column , value ):
1133
1157
"""
1134
1158
Insert column into DataFrame at specified location. Raises Exception if
@@ -1145,20 +1169,6 @@ def insert(self, loc, column, value):
1145
1169
value = np .atleast_2d (value )
1146
1170
self ._data .insert (loc , column , value )
1147
1171
1148
- def _set_item (self , key , value ):
1149
- """
1150
- Add series to DataFrame in specified column.
1151
-
1152
- If series is a numpy-array (not a Series/TimeSeries), it must be the
1153
- same length as the DataFrame's index or an error will be thrown.
1154
-
1155
- Series/TimeSeries will be conformed to the DataFrame's index to
1156
- ensure homogeneity.
1157
- """
1158
- value = self ._sanitize_column (value )
1159
- value = np .atleast_2d (value )
1160
- NDFrame ._set_item (self , key , value )
1161
-
1162
1172
def _sanitize_column (self , value ):
1163
1173
# Need to make sure new columns (which go into the BlockManager as new
1164
1174
# blocks) are always copied
0 commit comments