gpt4 book ai didi

python - Pandas dataframe - 根据两列的 ID 查找匹配的行

转载 作者:行者123 更新时间:2023-11-28 16:38:39 27 4
gpt4 key购买 nike

我有一个数据框,假设它是这样定义的:

df = pd.DataFrame({
'variable' : ["A","A","B","B","A","B","B","A"],
'id1' : [1,2,3,4,5,6,7,8],
'id2' : ['NaN','NaN',2,'NaN',4,3,'NaN',5]
})

所以结果是:

   id1  id2 variable1
0 1 NaN A
1 2 NaN A
2 3 2 B
3 4 NaN B
4 5 4 A
5 6 3 B
6 7 NaN B
7 8 5 A

现在我想实现的是:

  1. 匹配一行中的 id2 等于另一行中的 id1 的行。所以在这个特定的例子中,成对的行应该是:

    (2, 1) - 因为 df.iloc[2]['id2'] == df.iloc[1]['id1']

    随后:(4, 3), (5, 2), (7, 4)

  2. 从这些对中,只选择那些 variable1 在一对中是常量的,所以从上面的对中我们将只剩下 (5, 2) 和 (7, 4),因为只有在这些情况下,我们才有:

    df.iloc[5]['variable1'] == df.iloc[2]['variable1']

    (示例适用于第一对类(class))。

现在,如果这是纯 Python,我可能会迭代两个列表,包含 id1id2,检查 ids 和 variable,但我想应该有一个更面向数组的方法...

也许创建一个重复的数据帧并做一个 id1id2 的交集就可以了?还是我应该考虑一个完全不同的想法?

最佳答案

也许:

>>> pd.merge(df[['id2', 'variable']].reset_index(),
... df.reset_index(), how='inner',
... left_on=['id2', 'variable'],
... right_on=['id1', 'variable'])[['index_x', 'index_y']]

index_x index_y
0 5 2
1 7 4

[2 rows x 2 columns]

关于python - Pandas dataframe - 根据两列的 ID 查找匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533784/

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