pandas dataframe的两列唯一值

时间:2017-07-04 13:00:24

标签: python pandas dataframe unique

假设我有2列的pandas数据框:

df: Col1  Col2
      1     1
      1     2
      1     2
      1     2
      3     4
      3     4

然后我想只保留这两列的唯一值(col1,col2)并给出它们的频率:

df2: Col1  Col2  Freq
      1     1     1
      1     2     3
      3     4     2

我认为使用df['Col1', 'Col2'].value_counts()但它只适用于一列。 它是否存在处理许多列的功能?

2 个答案:

答案 0 :(得分:18)

您需要groupby + size + Series.reset_index

df = df.groupby(['Col1', 'Col2']).size().reset_index(name='Freq')
print (df)
   Col1  Col2  Freq
0     1     1     1
1     1     2     3
2     3     4     2

答案 1 :(得分:3)

你可以尝试

df.groupby(['Col1', 'Col2']).size()

与jez的答案相比,对于不同的视觉输出,您可以用

来扩展该解决方案
pd.DataFrame(df.groupby(['Col1', 'Col2']).size().rename('Freq'))

给出

           Freq
Col1 Col2      
1    1        1
     2        3
3    4        2