gpt4 book ai didi

python - 提取数据帧列匹配的行索引

转载 作者:行者123 更新时间:2023-12-01 09:34:15 25 4
gpt4 key购买 nike

我有两个数据帧df1df2:

df1 = pd.DataFrame({'1': [0,1,2,3,4,5],
'2': [6,7,8,9,10,11],
'a': [3,6,9,12,15,18]})

df2 = pd.DataFrame({'1': [0,1,2,33,40,5],
'2': [6,7,8,99,10,11],
'b': [30,60,90,120,150,180],
'c': [-1,-2,-3,-4,-5,-6]})

我想提取 df1 的行索引,其中 12 出现在 df2 的相应列中>。换句话说,我想提取 df1 的行索引,否则在两个数据帧之间进行 inner 连接时会遵循这些行索引:

pd.merge(df1,
df2,
on=['1','2'],
how='inner')

显而易见的答案是执行内部连接并提取索引,但我想知道是否有一种方法可以在不执行内部连接的情况下找到索引?

最佳答案

是的,如果 set_index 在两个 DataFrame 中使用 MultiIndex 是可能的与 Index.intersection :

mux = df1.set_index(['1','2']).index.intersection(df2.set_index(['1','2']).index)
print (mux)
MultiIndex(levels=[[0, 1, 2, 5], [6, 7, 8, 11]],
labels=[[0, 1, 2, 3], [0, 1, 2, 3]],
names=['1', '2'],
sortorder=0)

如有必要,可通过 MultiIndex.to_frame 将其转换为 DataFrame :

df = mux.to_frame()
print (df)
1 2
1 2
0 6 0 6
1 7 1 7
2 8 2 8
5 11 5 11
<小时/>
df11 = df1.set_index(['1','2'])
df22 = df2.set_index(['1','2'])
mux = df11.index.intersection(df22.index)
print (mux)
MultiIndex(levels=[[0, 1, 2, 5], [6, 7, 8, 11]],
labels=[[0, 1, 2, 3], [0, 1, 2, 3]],
names=['1', '2'],
sortorder=0)

df = df11.loc[mux]
print (df)
a
1 2
0 6 3
1 7 6
2 8 9
5 11 18

关于python - 提取数据帧列匹配的行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49668045/

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