如何使用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

相关文章