我有以下熊猫数据框(我正在使用python):
import pandas as pd
df = pd.DataFrame({
'date': ['2020-07-01', '2020-07-01', '2020-07-01', '2020-07-01', '2020-07-02', '2020-07-02', '2020-07-02'],
'value': ['abc', 'abc', 'abc', 'bb', 'bb', 'bb', 'c']})
df.head(7)
date value
0 2020-07-01 abc
1 2020-07-01 abc
2 2020-07-01 abc
3 2020-07-01 bb
4 2020-07-02 bb
5 2020-07-02 bb
6 2020-07-02 c
我怎么得到这个:
date value count
0 2020-07-01 abc 3
1 2020-07-01 bb 1
2 2020-07-02 bb 2
3 2020-07-02 c 1
或者这个:
date value count
0 2020-07-01 abc 3
bb 1
1 2020-07-02 bb 2
c 1
这两种解决方案对我来说都很好。
答案 0 :(得分:1)
尝试一下:
df2 = df.groupby(by = ['date','value'])['value'].count().to_frame(name='count')
结果:
count
date value
2020-07-01 abc 3
bb 1
2020-07-02 bb 2
c 1
或:
df2 = df.groupby(by = ['date','value'])['value'].count().to_frame(name='count').reset_index()
给出:
date value count
0 2020-07-01 abc 3
1 2020-07-01 bb 1
2 2020-07-02 bb 2
3 2020-07-02 c 1
答案 1 :(得分:1)
我们可以做value_counts
s=df.groupby('date').value.value_counts().to_frame('count')
count
date value
2020-07-01 abc 3
bb 1
2020-07-02 bb 2
c 1
答案 2 :(得分:1)
在value_counts
函数中使用.agg()
df.groupby('date').agg(count=('value', 'value_counts')).reset_index()
date value count
0 2020-07-01 abc 3
1 2020-07-01 bb 1
2 2020-07-02 bb 2
3 2020-07-02 c 1