python - Pandas 合并并为重复列创建多索引
问题描述
我有两个数据框
sessions = DataFrame({"ID":[1,2,3,4,5],"2018-06-30":[23,34,45,67,75],"2018-07-31":[32,43,45,76,57]})
leads = DataFrame({"ID":[1,2,3,4,5],"2018-06-30":[7,10,28,15,30],"2018-07-31":[7,10,28,15,30]})
我想合并 ID 上的两个数据框,然后创建一个多索引,如下所示:
我该怎么做?
直接 pandas.merge 将创建我不想要的 suffixes_x, _y 。
解决方案
在两个 DataFrame 中使用concat
with set_index
by ID
,然后 在列中swaplevel
使用sort_index
for :MultiIndex
df = (pd.concat([sessions.set_index('ID'),
leads.set_index('ID')],
axis=1,
keys=['sessions','leads'])
.swaplevel(0,1,axis=1)
.sort_index(axis=1, ascending=[True, False])
)
print (df)
2018-06-30 2018-07-31
sessions leads sessions leads
ID
1 23 7 32 7
2 34 10 43 10
3 45 28 45 28
4 67 15 76 15
5 75 30 57 30
推荐阅读
- python - 从 MySQL python 填充字典
- r - 使用带有外部参数的 group_by 和 slice
- python - 如何在python二进制搜索中获取树的长度
- react-native - 当 useEffect 中没有 fetch 时,取消 axios 请求
- c# - 带有 put 和 post 端点的 Swagger UI 导致 UI 崩溃
- asp.net - 如何阻止 Ionic zip 将 null 附加到文件末尾
- linux - -bash: ./ideal.exe: 没有这样的文件或目录
- node.js - SyntaxError: await 仅在 nodeJs 的异步函数中有效
- excel - Solver VBA隐藏对话框,仍然出现
- python - 为自定义分布式训练覆盖 Apply_gradients