pandas - 使用多个数据框创建嵌套数据框
问题描述
我有多个数据框,以下只是其中的 2 个:
print(df1)
Date A B C
2019-10-01 00:00:00 2 3 1
2019-10-01 01:00:00 5 1 6
2019-10-01 02:00:00 8 2 4
2019-10-01 03:00:00 3 6 5
print(df2)
Date A B C
2019-10-01 00:00:00 9 4 2
2019-10-01 01:00:00 3 2 4
2019-10-01 02:00:00 6 5 2
2019-10-01 03:00:00 3 6 5
它们都具有相同的索引和列。我想创建这样的数据框:
Date df1 df2
A 2019-10-01 00:00:00 2 9
2019-10-01 01:00:00 5 3
2019-10-01 02:00:00 8 6
2019-10-01 03:00:00 3 3
B 2019-10-01 00:00:00 3 4
2019-10-01 01:00:00 1 2
2019-10-01 02:00:00 2 5
2019-10-01 03:00:00 6 6
C 2019-10-01 00:00:00 1 2
2019-10-01 01:00:00 6 4
2019-10-01 02:00:00 4 2
2019-10-01 03:00:00 5 5
我必须将此过程应用于 30 个数据帧(它们的索引和列相同),所以我想编写一个 for 循环来实现这个数据帧。我怎样才能做到这一点?
解决方案
用and then重塑DataFrame
s列表的每个 DataFrame ,最后用 lambda 函数更改列名:DataFrame.set_index
DataFrame.unstack
concat
dfs = [df1,df2]
df = (pd.concat([x.set_index('Date').unstack() for x in dfs], axis=1)
.rename(columns=lambda x: f'df{x+1}'))
print (df)
df1 df2
Date
A 2019-10-01 00:00:00 2 9
2019-10-01 01:00:00 5 3
2019-10-01 02:00:00 8 6
2019-10-01 03:00:00 3 3
B 2019-10-01 00:00:00 3 4
2019-10-01 01:00:00 1 2
2019-10-01 02:00:00 2 5
2019-10-01 03:00:00 6 6
C 2019-10-01 00:00:00 1 2
2019-10-01 01:00:00 6 4
2019-10-01 02:00:00 4 2
2019-10-01 03:00:00 5 5
如果希望最终创建列表中的一些自定义列名称DataFrame
具有相同大小,例如长度dfs
并添加参数keys
:
dfs = [df1,df2]
names = ['col1','col2']
df = pd.concat([x.set_index('Date').unstack() for x in dfs], keys=names, axis=1)
print (df)
col1 col2
Date
A 2019-10-01 00:00:00 2 9
2019-10-01 01:00:00 5 3
2019-10-01 02:00:00 8 6
2019-10-01 03:00:00 3 3
B 2019-10-01 00:00:00 3 4
2019-10-01 01:00:00 1 2
2019-10-01 02:00:00 2 5
2019-10-01 03:00:00 6 6
C 2019-10-01 00:00:00 1 2
2019-10-01 01:00:00 6 4
2019-10-01 02:00:00 4 2
2019-10-01 03:00:00 5 5
推荐阅读
- html - 如何防止左侧边栏在窄显示时被部分截断?
- java - 从阵列中删除括号
- python - 具有产品给出错误的素数的 Python 代码
- python - 如何为信号处理进行最小化卡方?
- python - 我已经安装了 python 扩展(windows),但无法在集成终端的右侧菜单中看到 python(VS Code)
- python - 如何创建以下四面体结构
- c# - 在 foreach 循环中等待任务完成
- c# - Serilog 没有记录任何东西
- c# - 如何使用 azure 功能运行运行时间超过 10 分钟的应用程序?
- .net-core - 有没有人在使用 .NET Core 3 时变得花哨?