【发布时间】:2021-04-14 00:53:23
【问题描述】:
我有 MultiIndex 数据框(表 1),我想合并来自另一个不是 multiIndex 的数据框(表 2)的特定列。
表一示例:
>>> name 2020-10-21 2020-10-22 ...
Column 9 10 11 12 9 10 11 12
0 A5 2.1 2.2 2.4 2.8 5.4 3.4 1.1 7.3
1 B9 7.2 1.2 14.5 7.5 3.4 5.2 6.4 8.1
2 C3 1.1 6.5 8.4 9.1 1.1 4.3 6.5 8.7
...
表2示例:
>>>name indc control code
0 A5 0.32 yes 1
1 C3 0.11 no 2
2 B18 0.23 yes 2
3 B9 0.45 no 3
我想根据表 2 中的键“名称”(以及表 1 中的“索引”)合并列“代码”以获取名称旁边的代码:
>>> index 2020-10-21 2020-10-22 ...
Column code 9 10 11 12 9 10 11 12
0 A5 1 2.1 2.2 2.4 2.8 5.4 3.4 1.1 7.3
1 B9 3 7.2 1.2 14.5 7.5 3.4 5.2 6.4 8.1
2 C3 2 1.1 6.5 8.4 9.1 1.1 4.3 6.5 8.7
...
我知道当索引不是多索引级别时如何合并,然后我这样做:
df = table1.merge(table2[['code','name']], how = 'left',
left_on = 'index', right_on = 'name')
但现在我得到错误:
UserWarning:不同级别之间的合并可能会产生意想不到的结果 结果(左侧2级,右侧1级)warnings.warn(msg, 用户警告)
然后:
ValueError: 'index' 不在列表中
当我打印列时,我可以看到你就像元组,但我不知道为什么它说索引不在列表中,因为当我打印表 1 的 oclumns 时,我得到:
Index([ ('index', ''), (2020-10-22, 9)...
所以我有点困惑。
我的最终目标:根据“名称”和“索引”列合并代码列
【问题讨论】:
-
能否分享生成数据帧的代码,尤其是多索引?
标签: python pandas merge multi-index