【发布时间】:2021-04-29 14:48:08
【问题描述】:
我有两个系列,s1 和 s2,通过以下方式定义:
s1 = pd.Series({1: 10, 2: 20, 3: 30, 4: 40}, name='s1')
s2 = pd.Series({3: 35, 4: 45, 5: 55, 6: 65}, name='s2')
它们看起来像这样:
1 10
2 20
3 30
4 40
Name: s1, dtype: int64
3 35
4 45
5 55
6 65
Name: s2, dtype: int64
我正在尝试创建一个数据框,它将 s1 和 s2 作为两列,索引是两个系列索引的组合。但是一个简单的分配是行不通的:
df = pd.DataFrame()
df['s1'] = s1
df['s2'] = s2
生成的数据帧具有来自 s1 的索引,但错过了 s2 中索引不在 s1 中的行:
s1 s2
1 10 NaN
2 20 NaN
3 30 35.0
4 40 45.0
这是为什么呢?这似乎有点违反直觉。
注意 - 建议的解决方案是:
df = pd.concat((s1, s2), axis=1)
给出了预期的结果:
s1 s2
1 10.0 NaN
2 20.0 NaN
3 30.0 35.0
4 40.0 45.0
5 NaN 55.0
6 NaN 65.0
但我仍然很好奇为什么简单的列分配不起作用。
【问题讨论】:
标签: python pandas dataframe series