首页 > 解决方案 > 根据年月计算行数并从最旧到最新排序

问题描述

我有一个这样的df:

data = {'date':['2019-01-01', '2019-01-02', '2020-01-01', '2020-02-02'],
        'tweets':["aaa", "bbb", "ccc", "ddd"]}

df = pandas.DataFrame(data)

df['daate'] = pandas.to_datetime(df['date'], infer_datetime_format=True)

所以我有一个object类型日期和一个datetime64[ns]类型日期。我想知道每年每个月的行数,比如 2019-01 的两行,2020-01 和 2020-02 的一行。我还想根据日期对数据进行排序,从最旧到最新。谢谢各位!

标签: pythonpandasdataframetime-series

解决方案


您可以使用 groupby 来计算行数

df['year-month'] = df['daate'].dt.strftime('%Y-%m')
df.groupby('year-month').count()
            date    tweets  daate
year-month          
2019-01     2       2       2
2020-01     1       1       1
2020-02     1       1       1

这里是如何排序_values,ascending=True从最低到最高的False意思,从最高到最低的意思

df.sort_values(by='daate',ascending=True)

推荐阅读