在Pandas Dataframe中获取多个groupby中的公共值

时间:2018-06-28 09:33:25

标签: python pandas dataframe

我是Pandas数据框的新手,我想在由'col1'分组的多个组中找到'col2'的通用值

 col1    col2
  a       abc
          pqr
          xyz

  b       abc      
          def
          bcd

  c       bcd
          efg

输出应如下:

     abc      [a,b]
     bcd      [b,c]

有人可以帮助我解决问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用:

df['col1'] = df['col1'].replace('',np.nan).ffill()

s = df.groupby('col2')['col1'].apply(list)
s = s[s.str.len() > 1].reset_index()
print (s)
  col2    col1
0  abc  [a, b]
1  bcd  [b, c]

说明

  1. 先将replace个空值添加到NaN s,然后向前填充NaN s
  2. 对于col2的每个值,总计list s
  3. boolean indexing的长度过滤列表