如何获取具有多个值的每个单元格中的唯一值,并汇总每个列中出现的总值

时间:2019-05-20 16:47:51

标签: python pandas

我正在尝试获取每个单元格中具有多个值的唯一值,并对每列中出现的总值求和。

Example:
Name  A1        B1     C1
John  1,2,2,2   1,1,1  2,2,2
Cat   2,3,3,3   1,2,3  1,3,3
Dog   3,4       2,3    1

我会得到的答案:

       A1             B1             C1            Sum
Values - Count Values - Count Values - Count Values - Count    
     1 - 1          1 - 2          1 - 1          1 - 4
     2 - 2          2 - 2          2 - 2          2 - 6
     3 - 2          3 - 2          3 - 1          3 - 6
     4 - 1                                        4 - 1

1 个答案:

答案 0 :(得分:0)

您可以做到

s=df.loc[:,'A1':].applymap(lambda x : list(set(x.split(',')))).sum()
df=pd.DataFrame(s.tolist(),index=s.index)
yourdf=df.stack().groupby(level=0).value_counts().unstack(0)
yourdf['sum']=yourdf.sum(1)
yourdf
Out[378]: 
    A1   B1   C1  sum
1  1.0  2.0  2.0  5.0
2  2.0  2.0  1.0  5.0
3  2.0  2.0  1.0  5.0
4  1.0  NaN  NaN  1.0