python - 如何从参考数据帧在多索引数据帧中插入新行
问题描述
我已经看过几篇关于此的帖子,但我无法理解如何使用另一个数据框进行合并、连接和连接。如何参考另一个数据框 d2 填充初始 df1 [多索引数据框]。并填写每个级别的 df1 中不存在的所有行。
df1
date dispatch_no A B C
2019-12-2 1 a1 b1 c1
2 a2 b2 c2
5 a5 b5 c5
2019-12-2 1 d1 e1 f1
3 d3 e3 f3
参考数据框 d2
dispatch_no M N O
1 M1 N1 O1
2 M2 N2 O2
3 M3 N3 O3
4 M4 N4 O4
5 M5 N5 O5
预期产出
date dispatch_no A B C
2019-12-2 1 a1 b1 c1
2 a2 b2 c2
3 M3 N3 O3
4 M4 N4 O4
5 a5 b5 c5
2019-12-2 1 d1 e1 f1
2 M2 N2 O2
3 d3 e3 f3
4 M4 N4 O4
5 M5 N5 O5
解决方案
采用:
df1_unstack=df1.unstack('date')
new_df=( df1_unstack.reindex(index=list(range(df1_unstack.index.min(),
df1_unstack.index.max()+1)))
.stack(dropna=False)
.swaplevel()
.sort_index())
df_fill=df2.set_index('dispatch_no')
df_fill.columns=new_df.columns
new_df=new_df.fillna(df_fill)
print(new_df)
A B C
date dispatch_no
2019-12-2 1 a1 b1 c1
2 a2 b2 c2
3 M3 N3 O3
4 M4 N4 O4
5 a5 b5 c5
2019-12-3 1 d1 e1 f1
2 M2 N2 O2
3 d3 e3 f3
4 M4 N4 O4
5 M5 N5 O5
数据框
print(df1)
A B C
date dispatch_no
2019-12-2 1 a1 b1 c1
2 a2 b2 c2
5 a5 b5 c5
2019-12-3 1 d1 e1 f1
3 d3 e3 f3
print(df2)
dispatch_no M N O
0 1 M1 N1 O1
1 2 M2 N2 O2
2 3 M3 N3 O3
3 4 M4 N4 O4
4 5 M5 N5 O5
推荐阅读
- css - 如何使用 CSS 强制 textarea 垂直调整大小?
- autohotkey - 为什么热键 ^#{Left}:: 无效?
- python - 尝试使用 pip 安装 opencv 但我不断收到错误
- r - 将数字(十进制)值格式化为日期
- python - 如何从 url 裁剪图像并将其作为嵌入发送到 Discord
- dart - 如何在 Dart CLI 应用程序中附加开发人员日志
- c# - 自定义授权(限制)
- python - Python速成课程第18章。没有创建learning_log目录
- python - 神经网络的非线性回归
- javascript - 为 tinymce 编辑器设置样式和输入事件