我正在尝试将数据框(类似于R的cbind()函数)进行列绑定,并且在使用pandas的concat函数时遇到了问题,因为ignore_index=True似乎不起作用。
结果是
即使我使用重置索引
然后尝试一下
它仍然产生相同的结果!
预期的结果是一个6x4的数据框,其中列A、B、D、A1、C、D2的内容是水平连接的。
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 2, 3, 4])
df2 = pd.DataFrame({'A1': ['A4', 'A5', 'A6', 'A7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D2': ['D4', 'D5', 'D6', 'D7']},
index=[5, 6, 7, 3])
df1
# A B D
# 0 A0 B0 D0
# 2 A1 B1 D1
# 3 A2 B2 D2
# 4 A3 B3 D3
df2
# A1 C D2
# 5 A4 C4 D4
# 6 A5 C5 D5
# 7 A6 C6 D6
# 3 A7 C7 D7
dfs = [df1, df2]
df = pd.concat(dfs, axis=1, ignore_index=True)
print df
结果是
0 1 2 3 4 5
0 A0 B0 D0 NaN NaN NaN
2 A1 B1 D1 NaN NaN NaN
3 A2 B2 D2 A7 C7 D7
4 A3 B3 D3 NaN NaN NaN
5 NaN NaN NaN A4 C4 D4
6 NaN NaN NaN A5 C5 D5
7 NaN NaN NaN A6 C6 D6
即使我使用重置索引
df1.reset_index()
df2.reset_index()
然后尝试一下
pd.concat([df1, df2], axis=1)
它仍然产生相同的结果!
预期的结果是一个6x4的数据框,其中列A、B、D、A1、C、D2的内容是水平连接的。
pd.concat([df1, df2], axis=0, ignore_index=True)
这个函数是否能够得到你想要的结果?如果不行,你能具体说明一下你期望的输出是什么吗? - Alex Rileypd.concat([df1, df2], axis=1, ignore_index=True)
和pd.concat([df1, df2], axis=1)
的输出吗?第一个是否直观地模拟了cbind
的功能? - celignore_index
只会忽略你要连接的轴上的标签,所以它仍然会在索引标签上进行外部连接。我同意函数参数的名称在这里并不是最直观的。 - Alex Riley