为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Pandas 数据透视表查询中创建包含日期的字典?

如何在 Pandas 数据透视表查询中创建包含日期的字典?

料青山看我应如是 2023-10-18 11:03:36
我有一个如下所示的数据框:- 我需要创建一个 Pandas 数据透视表,它将输出如下表:也就是说,它将所有小于 20 年 10 月 1 日的日期汇总为逾期,然后正常汇总从 20 年 10 月 1 日起的所有日期。下面的代码是我到目前为止所想出的。#!/usr/bin/env python3import pandas as pdimport numpy as np# creating a data frame df = pd.read_csv("CSVData2.csv") table = pd.pivot_table(data=df,index=['Code'], columns=['Process Month'], values = ['Number'], aggfunc=sum)print(table)
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

也许这对你有用?


# Recreating your dataframe in code

df = pd.DataFrame({'Code':'A1 P2 B3 B3 C4 A1 B3 A1 A1'.split(' '),

                  'Branch':'UW2 RQ2 UW2 UW2 X01 X01 DN9 PE7 PE7'.split(' '),

                  'Process Month':'01-Oct-20 01-Nov-20 01-Sep-20 01-Sep-20 01-Aug-20 01-Oct-20 01-Sep-20 01-Dec-20 01-Sep-20'.split(' '),

                  'Number':[1]*9})


#Change string to datetime dtype

df['Process Month'] = pd.to_datetime(df['Process Month'])


# Create mask to defined 'Overdue'    

m = df['Process Month'] < '01-Oct-20'


# Output Process Month back as string

df['Process Month'] = df['Process Month'].dt.strftime('%d-%b-%Y')


# Overwriting Process Month with 'OverDue' per mask above

df.loc[m, 'Process Month'] = 'OverDue'


# Creating a crosstab with totals

df_out = pd.crosstab(df['Code'], df['Process Month'], margins=True, margins_name='Total')


df_out.drop('Total', axis=1) #Don't need row Totals column

输出:


Process Month  01-Dec-2020  01-Nov-2020  01-Oct-2020  OverDue

Code                                                         

A1                       1            0            2        1

B3                       0            0            0        3

C4                       0            0            0        1

P2                       0            1            0        0

Total                    1            1            2        5


查看完整回答
反对 回复 2023-10-18
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信