@@ -1227,61 +1227,52 @@ def first_not_none(values):
1227
1227
# GH 8467
1228
1228
return self ._concat_objects (keys , values , not_indexed_same = True )
1229
1229
1230
- try :
1231
- if self .axis == 0 and isinstance (v , ABCSeries ):
1232
- # GH6124 if the list of Series have a consistent name,
1233
- # then propagate that name to the result.
1234
- index = v .index .copy ()
1235
- if index .name is None :
1236
- # Only propagate the series name to the result
1237
- # if all series have a consistent name. If the
1238
- # series do not have a consistent name, do
1239
- # nothing.
1240
- names = {v .name for v in values }
1241
- if len (names ) == 1 :
1242
- index .name = list (names )[0 ]
1243
-
1244
- # normally use vstack as its faster than concat
1245
- # and if we have mi-columns
1246
- if (
1247
- isinstance (v .index , MultiIndex )
1248
- or key_index is None
1249
- or isinstance (key_index , MultiIndex )
1250
- ):
1251
- stacked_values = np .vstack ([np .asarray (v ) for v in values ])
1252
- result = DataFrame (
1253
- stacked_values , index = key_index , columns = index
1254
- )
1255
- else :
1256
- # GH5788 instead of stacking; concat gets the
1257
- # dtypes correct
1258
- from pandas .core .reshape .concat import concat
1259
-
1260
- result = concat (
1261
- values ,
1262
- keys = key_index ,
1263
- names = key_index .names ,
1264
- axis = self .axis ,
1265
- ).unstack ()
1266
- result .columns = index
1267
- elif isinstance (v , ABCSeries ):
1230
+ if self .axis == 0 and isinstance (v , ABCSeries ):
1231
+ # GH6124 if the list of Series have a consistent name,
1232
+ # then propagate that name to the result.
1233
+ index = v .index .copy ()
1234
+ if index .name is None :
1235
+ # Only propagate the series name to the result
1236
+ # if all series have a consistent name. If the
1237
+ # series do not have a consistent name, do
1238
+ # nothing.
1239
+ names = {v .name for v in values }
1240
+ if len (names ) == 1 :
1241
+ index .name = list (names )[0 ]
1242
+
1243
+ # normally use vstack as its faster than concat
1244
+ # and if we have mi-columns
1245
+ if (
1246
+ isinstance (v .index , MultiIndex )
1247
+ or key_index is None
1248
+ or isinstance (key_index , MultiIndex )
1249
+ ):
1268
1250
stacked_values = np .vstack ([np .asarray (v ) for v in values ])
1269
1251
result = DataFrame (
1270
- stacked_values . T , index = v . index , columns = key_index
1252
+ stacked_values , index = key_index , columns = index
1271
1253
)
1272
1254
else :
1273
- # GH#1738: values is list of arrays of unequal lengths
1274
- # fall through to the outer else clause
1275
- # TODO: sure this is right? we used to do this
1276
- # after raising AttributeError above
1277
- return Series (
1278
- values , index = key_index , name = self ._selection_name
1279
- )
1280
-
1281
- except ValueError :
1282
- # TODO: not reached in tests; is this still needed?
1283
- # GH1738: values is list of arrays of unequal lengths fall
1284
- # through to the outer else clause
1255
+ # GH5788 instead of stacking; concat gets the
1256
+ # dtypes correct
1257
+ from pandas .core .reshape .concat import concat
1258
+
1259
+ result = concat (
1260
+ values ,
1261
+ keys = key_index ,
1262
+ names = key_index .names ,
1263
+ axis = self .axis ,
1264
+ ).unstack ()
1265
+ result .columns = index
1266
+ elif isinstance (v , ABCSeries ):
1267
+ stacked_values = np .vstack ([np .asarray (v ) for v in values ])
1268
+ result = DataFrame (
1269
+ stacked_values .T , index = v .index , columns = key_index
1270
+ )
1271
+ else :
1272
+ # GH#1738: values is list of arrays of unequal lengths
1273
+ # fall through to the outer else clause
1274
+ # TODO: sure this is right? we used to do this
1275
+ # after raising AttributeError above
1285
1276
return Series (values , index = key_index , name = self ._selection_name )
1286
1277
1287
1278
# if we have date/time like in the original, then coerce dates
0 commit comments