我现将某个月内每日的个案数目统计如下:
import pandas as pd
d1 = pd.DataFrame({'ID': ["A", "A", "A", "B", "B", "C", "C", "C", "C", "D", "D", "D"],
"date": ["2010-12-30", "2010-02-27", "2010-02-26", "2012-01-01", "2012-01-03",
"2011-01-01", "2011-01-02", "2011-01-08", "2014-02-21", "2010-08-31", "2010-08-30", "2010-09-01"]})
最后的结果是这样的:
ID year_month count
0 A 2010-02 2
1 A 2010-12 1
2 B 2012-01 2
3 C 2011-01 3
4 C 2014-02 1
5 D 2010-08 2
6 D 2010-09 1
你有什么想法如何产生像上面这样的DataFrame吗?我使用了groupby
和apply
函数,但不能产生这样的。提前感谢!
2条答案
按热度按时间nzkunb0c1#
将
Series.dt.to_period
用于月份期间,并按GroupBy.size
计数:Series.dt.strftime
的另一个想法是:如果没有日期时间,而是字符串:
63lcw9qa2#
使用
apply
和groupby
应该可以:这将导致:
您可能需要更改
apply
lambda以更仔细地处理日期。