pandas 数据框的两列的唯一值
Unique values of two columns for pandas dataframe
假设我有 pandas 个包含 2 列的数据框:
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()
但它只适用于一列。
是否存在处理多列的功能?
你可以试试
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
你需要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
假设我有 pandas 个包含 2 列的数据框:
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()
但它只适用于一列。
是否存在处理多列的功能?
你可以试试
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
你需要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