How to add multiple different DataFrame using for loop?(如何使用for循环添加多个不同的DataFrame?)
本文介绍了如何使用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
这篇关于如何使用for循环添加多个不同的DataFrame?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:如何使用for循环添加多个不同的DataFrame?
基础教程推荐
猜你喜欢
- Discord.py 缺少必需的参数 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
