这是我的数据框
df = pd.DataFrame({0: {'key': 2, 1: 7, 2: 5, 3: 4, 4: 2, 5: 7}, 1: {'key': 3, 1: 6, 2: 4, 3: 5, 4: 3, 5: 6}, 2: {'键': 4, 1: 3, 2: 3, 3: 4, 4: 4, 5: 3}, 3: {'键': 3, 1: 4, 2: 2, 3: 3, 4: 5, 5: 4}, 4: {'键': 6, 1: 5, 2: 3, 3: 6, 4: 4, 5: 3}, 5: {'键': 2, 1: 4, 2: 6, 3: 7, 4: 3, 5: 2}, 6: {'键': 3, 1: 3, 2: 7, 3: 6, 4: 6, 5: 1}, 7: {'键': 4, 1: 2, 2: 6, 3: 3, 4: 7, 5: 2}, 8: {'键': 3, 1: 1, 2: 7, 3: 4, 4: 6, 5: 3}, 9: {'键': 6, 1: 2, 2: 6, 3: 5, 4: 3, 5: 6}})
0 1 2 3 4 5 6 7 8 9
key 2 3 4 3 6 2 3 4 3 6
1 7 6 3 4 5 4 3 2 1 2
2 5 4 3 2 3 6 7 6 7 6
3 4 5 4 3 6 7 6 3 4 5
4 2 3 4 5 4 3 6 7 6 3
5 7 6 3 4 3 2 1 2 3 6
我需要找到相关索引与从左到右的关键行匹配的列。
例如,在索引 1 处,第 6 列与键行具有相同的值,索引 2 与第 9 列处的键行匹配,并且之前没有任何值。相同的逻辑可以应用于索引 3、4 和 5。
我只需要索引与键值匹配的第一个实例,后面的所有值都不重要。
预期输出
0 1 2 3 4 5 6 7 8 9 trace
key 2 3 4 3 6 2 3 4 3 6 NaN
1 7 6 3 4 5 4 3 2 1 2 6
2 5 4 3 2 3 6 7 6 7 6 9
3 4 5 4 3 6 7 6 3 4 5 2
4 2 3 4 5 4 3 6 7 6 3 0
5 7 6 3 4 3 2 1 2 3 6 5
我尝试了 duplicates 的多种变体但似乎没有任何作用。
最佳答案
您可以使用idxmax
在检查 df 中的值与关键行相等 (eq
) 后,轴沿着列。
df["trace"] = df.iloc[1:, :].eq(df.loc['key', :]).idxmax(axis=1)
print (df)
0 1 2 3 4 5 6 7 8 9 trace
key 2 3 4 3 6 2 3 4 3 6 NaN
1 7 6 3 4 5 4 3 2 1 2 6.0
2 5 4 3 2 3 6 7 6 7 6 9.0
3 4 5 4 3 6 7 6 3 4 5 2.0
4 2 3 4 5 4 3 6 7 6 3 0.0
5 7 6 3 4 3 2 1 2 3 6 5.0
关于python - 根据关键行查找跨轴的第一个重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62124865/