在熊猫数据框中按日期和计数值分组
Posted
技术标签:
【中文标题】在熊猫数据框中按日期和计数值分组【英文标题】:Group by date and count values in pandas dataframe 【发布时间】:2020-10-22 07:22:45 【问题描述】:我有以下 pandas 数据框(我正在使用 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
两种解决方案对我来说都同样适用。
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:我们可以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
【讨论】:
【参考方案3】:在.agg()
函数中使用value_counts
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
【讨论】:
以上是关于在熊猫数据框中按日期和计数值分组的主要内容,如果未能解决你的问题,请参考以下文章