python - python pandas df在multiindex的一部分上合并
问题描述
我正在将 Python 3 与熊猫一起使用。
我有两个具有多索引的数据框,一个索引由 a、b 列组成,另一个索引由 a、b、c 列组成,为了这篇文章,让我们相应地调用数据框 ab 和 abc。
我想像这样使用与熊猫的左合并
abc.merge(ab, how="left") 并使用索引来创建合并。当然,我只需要索引中的 a,b,因为 c 不在 ab 中,我如何在不降低级别且不重置索引的情况下创建此合并?
首选使用多索引的简单有效的解决方案。
谢谢
解决方案
使用它可以获得相同的结果,join
因为它更注重索引。这是我曾经在介绍中教授的 MVE pd.MultiIndex
:
first_index = [('A', 'a'), ('A', 'b'), ('B', 'a'), ('B', 'b')]
second_index = [('A', 'a', 'c'), ('A', 'b', 'c'), ('B', 'a', 'c'), ('B', 'b', 'c')]
data = [1, 2, 3, 4]
ab = pd.DataFrame(data=data, index=pd.MultiIndex.from_tuples(first_index,
names=['A', 'B']),
columns=['col_1'])
abc = pd.DataFrame(data=data, index=pd.MultiIndex.from_tuples(second_index,
names=['A', 'B', 'C']),
columns=['col_2'])
ab
A B col_1
A a 1
A b 2
B a 3
B b 4
abc
A B C col_2
A a c 1
A b c 2
B a c 3
B b c 4
所以到目前为止,这只是简单的带有名称的 MultiIndex,但在这些名称上使用了连接:
abc.join(ab, on=['A', 'B'], how='left')
A B C col_2 col_1
A a c 1 1
A b c 2 2
B a c 3 3
B b c 4 4
您left
无需reset_index
.
推荐阅读
- android - 按下按钮时如何使 StateListDrawable 更改背景?(在 xml 中)
- mysql - 为什么我的 Insert Into 语句不能正常工作
- json - 如何将 Json.Decode.Value 解码为 elm 0.19 中的标记联合类型?
- r - 如何在 R 中绘制线性和逆回归拟合线?
- python - 如何在 RED.xml 中为 C:/Python27/Lib/site-packages/SeleniumLibrary/__init__.py 设置相对路径?
- python - BeautifulSoup find_all 在一个列表中
- python - 读取本地保存的 HTML 文件
- django - 通过 IIS windows 身份验证和 django 访问网站
- javascript - 如何在委托事件侦听器中支持 stopPropagation
- python - 删除熊猫中特定字符后的部分句子