给定pandas中的两列如何在A列中重复给出A列中匹配行的索引?
数据:
A B
0 x k
1 y z
2 z y
3 k x
4 x nAn
输出:
A B
0 3 k
1 2 z
2 1 y
3 0 x
4 3 nAn
我已尝试循环遍历每一行并将A的行分配给B中匹配行的索引,但我觉得有一种更有效的方法可以做到这一点。
答案 0 :(得分:3)
假设A中的值始终属于B中的某个值,您可以使用广播比较来提高性能:
df['A'] = (df.B.values == df.A[:, None]).argmax(1)
df
A B
0 3 k
1 2 z
2 1 y
3 0 x
4 3 nAn
答案 1 :(得分:3)
使用map
df.assign(A=df.A.map(dict(zip(df.B, df.index))))
A B
0 3 k
1 2 z
2 1 y
3 0 x
4 3 nAn
答案 2 :(得分:2)
使用Series.get
pd.Series(df.index,index=df.B).get(df.A)
Out[135]:
A
x 3
y 2
z 1
k 0
x 3
dtype: int64
#df['A']=pd.Series(df.index,index=df.B).get(df.A).values