Pandas将Series组合为DataFrame时行列维度与预期不符疑问
问题解答:Pandas用Series列表生成DataFrame的维度问题
import pandas as pd S1 = pd.Series([1, 2, 3, 4], index = ['a', 'b','c','d']) S2 = pd.Series([11, 22, 33, 44], index = ['a', 'bb','c','dd']) D1 = pd.DataFrame([S1,S2])
你得到2行6列的结果,是Pandas构造DataFrame时的默认规则决定的:
- 当你向
pd.DataFrame()传入元素为Series的列表时,列表中的每一个Series会被视作DataFrame的一行,而非一列 - 每个Series自带的索引,会被用作DataFrame的列名,Pandas会自动取所有Series索引的并集作为最终的列索引,匹配不到值的位置会填充
NaN
实际运行print(D1)的输出可以验证这个规则:
a b bb c d dd 0 1.0 2.0 NaN 3 4.0 NaN 1 11.0 NaN 22.0 33 NaN 44.0可以看到2行的行索引默认是0、1,分别对应S1、S2,6列是两个Series索引的去重并集。
如果需要得到你预期的2列6行的结果,使用pd.concat()方法并指定拼接轴向为列(axis=1)即可:
# 得到2列6行的结果 D2 = pd.concat([S1, S2], axis=1)
运行后print(D2)的输出符合你的预期:
0 1 a 1.0 11.0 b 2.0 NaN bb NaN 22.0 c 3.0 33.0 d 4.0 NaN dd NaN 44.0
内容的提问来源于stack exchange,提问作者Sudhir Sharma
相关产品推荐
相关产品推荐

