对于每一行,在列

时间:2017-12-01 20:21:28

标签: python pandas

我想在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然后做某种合并,但是,我想知道是否没有更好/更有效的方法?这似乎很容易,我希望有一个单行功能。 提前谢谢。

1 个答案:

答案 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]