![](/img/trans.png)
[英]How to create a crosstab with concatenation on pandas dataframe?
[英]How to crosstab or count dataframe rows by date in pandas
我对大熊猫工作还很陌生。 我有一个包含这样的单个条目的数据框:
df导入:
ID | 创建日期 | 日期_关闭 |
---|---|---|
0 | 01-07-2020 | |
1 | 02-09-2020 | 10-09-2020 |
2 | 07-03-2019 | 02-09-2020 |
我想以某种方式过滤它,我得到按年、季度和月分组的创建和关闭对象(计数 ID)的总数,如下所示:
df输入输出:
年 | 量子点 | 月 | number_created | number_closed |
---|---|---|---|---|
2019年 | 1 | 行进 | 1 | 0 |
2020年 | 3 | 七月 | 1 | 0 |
九月 | 1 | 2 |
我想我必须使用 crosstab 或 group_by 的某种组合,但是我尝试了很多想法并且已经对该问题进行了研究,但是我似乎无法找到一种方法。 估计是理解的问题。 提前致谢!
将DataFrame.melt
与crosstab
DataFrame.melt
使用:
df['date_created'] = pd.to_datetime(df['date_created'], dayfirst=True)
df['date_closed'] = pd.to_datetime(df['date_closed'], dayfirst=True)
df1 = df.melt(value_vars=['date_created','date_closed']).dropna()
df = (pd.crosstab([df1['value'].dt.year.rename('Year'),
df1['value'].dt.quarter.rename('Qrt'),
df1['value'].dt.month.rename('Month')], df1['variable'])
[['date_created','date_closed']])
print (df)
variable date_created date_closed
Year Qrt Month
2019 1 3 1 0
2020 3 7 1 0
9 1 2
df = df.rename_axis(None, axis=1).reset_index()
print (df)
Year Qrt Month date_created date_closed
0 2019 1 3 1 0
1 2020 3 7 1 0
2 2020 3 9 1 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.