繁体   English   中英

如何在熊猫中按日期交叉表或计算数据帧行

[英]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.meltcrosstab 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM