如何使用for循环添加多个不同的DataFrame?
问题描述
我有多个数据框,我想将下一个数据框的值添加到前一个数据框的第三个值之后。
我是Pyhton的新手,我正在使用Google CoLab,所以我希望您能帮助我。非常感谢。因此,下面是我想要如何做的一个示例。
df1:
Index Column_1
0 1
1 1
2 1
3 1
4 1
5 1
df2:
Index Column_2
0 2
1 2
2 2
3 2
4 2
5 2
df3:
Index Column_3
0 3
1 3
2 3
3 3
4 3
5 3
我想从df1的索引3开始添加df2的值。
另外,我想从df2的索引6开始添加df3的值。
因此,基本上,随着数据帧的添加,索引会加倍。
所以df1+df2+df3应该是这样的:
df4:
Index Column_1 Column_2 Column_3
0 1
1 1
2 1
3 1 3
4 1 3
5 1 3
6 2 5
7 2 5
8 2 5
9 3
10 3
11 3
或
df4
Index Column_4
0 1
1 1
2 1
3 3
4 3
5 3
6 5
7 5
8 5
9 3
10 3
11 3
是否有在循环中执行此操作的方法?
我希望你们能帮助我。非常感谢。
解决方案
使用pd.merge
df = df1.merge(df2.assign(Index=df2['Index']+3), how='outer')
.merge(df3.assign(Index=df3['Index']+6), how='outer')
df['Column_2'] += df['Column_1'].fillna(0)
df['Column_3'] += df['Column_2'].fillna(0)
>>> df
Index Column_1 Column_2 Column_3
0 0 1.0 NaN NaN
1 1 1.0 NaN NaN
2 2 1.0 NaN NaN
3 3 1.0 3.0 NaN
4 4 1.0 3.0 NaN
5 5 1.0 3.0 NaN
6 6 NaN 2.0 5.0
7 7 NaN 2.0 5.0
8 8 NaN 2.0 5.0
9 9 NaN NaN 3.0
10 10 NaN NaN 3.0
11 11 NaN NaN 3.0
更新
是否有方法可以仅在一列中呈现结果?
df['Column_4'] = df.ffill(axis=1)['Column_3']
>>> df
Index Column_1 Column_2 Column_3 Column_4
0 0 1.0 NaN NaN 1.0
1 1 1.0 NaN NaN 1.0
2 2 1.0 NaN NaN 1.0
3 3 1.0 3.0 NaN 3.0
4 4 1.0 3.0 NaN 3.0
5 5 1.0 3.0 NaN 3.0
6 6 NaN 2.0 5.0 5.0
7 7 NaN 2.0 5.0 5.0
8 8 NaN 2.0 5.0 5.0
9 9 NaN NaN 3.0 3.0
10 10 NaN NaN 3.0 3.0
11 11 NaN NaN 3.0 3.0
相关文章