使用pandas获取每人每天的事件总数

qmelpv7a  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(84)

我有一个.csv的输出口述确认时间在一天中的每一张票被创建。我试图得到总门票确认为每个人每天。以下是实际行数为1000的示例数据:

Date_Created,Confirmed_By
4/6/2022 10:35,Bob
4/6/2022 11:39,Bob
4/6/2022 12:19,Tim
4/7/2022 7:08,Bob
4/7/2022 7:30,Sally
4/7/2022 7:35,Bob
4/8/2022 8:09,Sally
4/8/2022 8:28,Jack
4/8/2022 8:40,Jack
4/8/2022 10:00,Sally
4/8/2022 10:23,Jack

我希望看到一个表,第一列是日期列表,随后的列是每个日期的总确认数:
| 日期|鲍勃|蒂姆|杰克|莎莉|
| --|--|--|--|--|
| 2022-04-06 2022-04-06| 2 | 1 | 0 | 0 |
| 2022-04-07 2022-04-07| 2 | 0 | 0 | 1 |
| 2022-04-08 2022-04-08| 0 | 0 | 3 | 2 |
我试着把CSV拉到一个框架中,并使用value_counts()为每个人创建一个系列,但我永远不会100%的名字,因为我们会有随机的填充,不会被考虑。

Bob = df[df["Confirmed By"].str.contains("Bob")]
Bob_Days = Bob["Date_Confirmed"].value_counts().rename("Bob")
conf_per_day = pd.concat(
    [Bob_Days, Tim_Days, Jack_Days, Sally_Days], axis=1
)

然后我尝试了一个df.value_count().to_frame('counts').reset_index(),它在单独的行上给出了日期、名称和总数,但不知道如何在没有重复日期的情况下将这些名称旋转到列中。对于每人每天的确认总数有什么想法吗?

mxg2im7a

mxg2im7a1#

使用crosstab

>>> pd.crosstab(df['Date_Created'].dt.date, df['Confirmed_By'])

Confirmed_By  Bob  Jack  Sally  Tim
Date_Created                       
2022-04-06      2     0      0    1
2022-04-07      2     0      1    0
2022-04-08      0     3      2    0
czq61nw1

czq61nw12#

我会这么做

import pandas as pd

df = pd.read_csv('your_test_data.csv')

# create date column
df['Date'] = pd.to_datetime(df['Date_Created']).dt.date

# pivot table with counting
result = df.pivot_table(index='Date', columns='Confirmed_By', aggfunc='count').fillna(0)
tjrkku2a

tjrkku2a3#

一种可能的方法是使用resample()value_counts()

df['Date_Created'] = pd.to_datetime(df['Date_Created'])

df.resample('D',on = 'Date_Created')['Confirmed_By'].value_counts().unstack().fillna(0)

(df.assign(Date_Created = lambda x: pd.to_datetime(x['Date_Created']).dt.normalize())
.value_counts()
.unstack()
.fillna(0))

输出量:

Confirmed_By  Bob  Jack  Sally  Tim
Date_Created                       
2022-04-06    2.0   0.0    0.0  1.0
2022-04-07    2.0   0.0    1.0  0.0
2022-04-08    0.0   3.0    2.0  0.0

相关问题