我想在python中使用pandas实现以下功能: 对于每一行,我想得到所有其他行的行(例如索引),在某些列中它们具有相同的值,例如。
B Result
0 1 [1, 2]
1 1 [0, 2]
2 1 [0, 1]
3 5 [5]
4 0 []
5 5 [4]
所以我的数据框最初只包含B列,我想填写结果。第0行得[1,2],因为第1行和第2行在列B中与第0行具有相同的值,依此类推。
我认为可能会做一个groupby然后做某种合并,但是,我想知道是否没有更好/更有效的方法?这似乎很容易,我希望有一个单行功能。 提前谢谢。
答案 0 :(得分:2)
两步
df['result']=df.B.map(df.groupby('B').B.apply(lambda x : [x.index.values][0]))
df['result']=df.reset_index().apply(lambda x : list(set(x['result'])-set([x['index']])),axis=1)
df
Out[1569]:
B result
0 1 [1, 2]
1 1 [0, 2]
2 1 [0, 1]
3 5 [5]
4 0 []
5 5 [3]