首页 > 解决方案 > 如何按日期排序,然后按日期添加另一列的总数

问题描述

如何获取一行日期并按月份过滤它们,并添加每个月的总销售额?

这段代码正试图在一月份完成。

df['Release Date'] = pd.to_datetime(df['Release Date'])
print(df.loc[df['Release Date'].dt.month == 1][df['Tickets Sold'].sum())

df['Release Date'] = pd.to_datetime(df['Release Date'])
print(df.loc[df['Release Date'].dt.month == 1][df['Tickets Sold'].sum())

0 1,000 卢比纸币 ... 277 1 10 Cloverfield Lane ... 8333294 2 13 小时:班加西的秘密士兵 ... 6110198 3 2016 奥斯卡短裤 ... 325643 4 20 世纪女性 ... 20644

试图将每个月售出的门票总数加起来。

标签: pythonpandascsv

解决方案


所以你试图得到每个月的总数。然后,您是否也尝试对这些总数进行一些处理?

虚拟数据:

import pandas as pd
import numpy as np

# dummy data
date_range = pd.date_range('2019-01-01', '2019-03-31', freq='D')
df = pd.DataFrame(
    np.random.randint(1, 20, (date_range.shape[0], 1)),
    index=date_range,
    columns=['Tickets Sold'])
df['Release Date'] = df.index
df.reset_index(inplace=True, drop=True)

>>> print(df.head())
   Tickets Sold Release Date
0            15   2019-01-01
1             7   2019-01-02
2             5   2019-01-03
3             5   2019-01-04
4            19   2019-01-05

要获得总数,只需将Release Date列设为并每月index使用一次。resampleM

# set column release date as index and resample.
df.set_index('Release Date', inplace=True)

>>> print(df.resample('M').sum())
              Tickets Sold
Release Date              
2019-01-31             305
2019-02-28             278
2019-03-31             322

推荐阅读