gpt4 book ai didi

python - 选择索引值等于 Pandas 另一个数据框中的列的多级索引数据框的行

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:11 25 4
gpt4 key购买 nike

有两个数据框,其中一个的多级索引显示为另一个的列,其想法是从第一行中选择索引值与相应列值相同的行。

例子

有以下两个数据帧df1df2:

df1 = pd.DataFrame({'i1': ['a1', 'a2', 'a3'], 'i2': ['b1', 'b2', 'b3'], 'c': [1, 2, 3]})
df1 = df1.set_index(['i1', 'i2'])

c
i1 i2
a1 b1 1
a2 b2 2
a3 b3 3


df2 = pd.DataFrame({'i1': ['a1', 'a3'], 'i2': ['b1', 'b3']})

i1 i2
0 a1 b1
1 a3 b3

选择 df1 中索引值 i1i2 与列 i1 具有相同值的那些行和 df2 中的 i12 导致:

       c
i1 i2
a1 b1 1
a3 b3 3

最佳答案

使用Index.isin使用 MultiIndex:

df = df1[df1.index.isin(df2.set_index(['i1','i2']).index)]

备选方案:

df = df1[df1.index.isin(pd.MultiIndex.from_arrays([df2['i1'], df2['i2']]))]

或者使用merge, join - 但需要重置和设置索引:

df = df1.reset_index().merge(df2).set_index(['i1', 'i2'])
df = df2.join(df1, on=['i1', 'i2'], how='inner').set_index(['i1', 'i2'])

print (df)
c
i1 i2
a1 b1 1
a3 b3 3

关于python - 选择索引值等于 Pandas 另一个数据框中的列的多级索引数据框的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52403400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com