【发布时间】:2021-10-15 12:48:52
【问题描述】:
我正在尝试合并多列,其中一列之后的以下列从特定索引开始。例如,正如您在下面的代码中看到的,我有 15 组从 df20 到 df90 的数据。如代码所示,我已合并数据 i,然后从 index = 1,000 开始合并另一个数据。
所以我希望我的输出是 df20,然后是从 index=1000 开始的 df25,然后是从 index=2000 开始的 df30,然后是 index=3000 的 df35。我想查看所有 15 列,但我的输出中只有一列。
我在下面尝试过,但似乎不起作用。请帮忙。
dframe = [df20, df25, df30, df35, df40, df45, df50, df55, df60, df65, df70, df75, df80, df85, df90]
for i in dframe:
a = i.merge((i).set_index((i).index+1000), how='outer', left_index=True, right_index=True)
print(a)
输出:
df90_x df90_y
0 0.000757 NaN
1 0.001435 NaN
2 0.002011 NaN
3 0.002497 NaN
4 0.001723 NaN
... ... ...
10995 NaN 1.223000e-12
10996 NaN 1.305000e-12
10997 NaN 1.809000e-12
10998 NaN 2.075000e-12
10999 NaN 2.668000e-12
[11000 rows x 2 columns]
预期输出:
df20 df25 df30
0 0.000757 0 0
1 0.001435 0 0
2 0.002011 0 0
3 0.002497 0 0
4 0.001723 0 0
... ... ... ...
1000 1.223000e-12 0
1001 1.305000e-12 0
1002 1.809000e-12 0
1003 2.668000e-12 0
... ...
2000 0.1234
2001 0.4567
2002 0.8901
2003 0.2345
【问题讨论】:
-
这就是
merge应该做的事情。试试pd.concat(dframe, axis=1) -
您希望输出是什么?为什么输出错误?解释这一点将有助于回答我对您的数据格式的许多问题。
-
@MarijnvanVliet 所以我希望我的输出是 df20,然后是从 index=1000 开始的 df25,然后是从 index=2000 开始的 df30,然后是 index=3000 的 df35。
-
@ThePyGuy 我想尝试将我的输出设为 df20,然后是从 index=1000 开始的 df25,然后是从 index=2000 开始的 df30,然后是 index=3000 的 df35。跨度>
-
如果只是你关心的索引,可以使用
pd.concat。从数据框中发布一个小样本,并为样本数据添加预期输出。请看How to ask和How to make good pandas example
标签: python pandas dataframe merge concatenation