Pandas 2016 年 dataframe 数量最多的用户

Pandas dataframe top users by amount within 2016

我有一个包含列的数据框:customerId、金额、日期此数据框的日期范围是:日期:2016 年 1 月 1 日 2017 年 9 月 9 日我试图找到前 10,000 名客户将由他们在 2016 年花费的总金额;我打算按降序对金额列进行排序,然后使用

仅在 2016 年之前解析日期列
mask = (df['date'] >= '1/1/2016') & (df['date'] <'1/1/2017')

必须有更聪明的方法来做到这一点,我是编码新手,所以任何帮助将不胜感激谢谢!

您可以使用 .dt 访问器,因为日期列是 pandas 日期时间。否则首先将其转换为日期时间

df.date = pd.to_datetime(df.date)
df[df.date.dt.year == 2016]

应该给你所需的行。如果你能post样本数据集,测试它会更容易

也许您可以尝试通过以下方式将列转换为日期时间:

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

#then filter by year
mask = df['date'].apply(lambda x: x.year == 2016)

@A-Za-z 的回答更简洁,但如果该列不是 datetime 类型,您可以将其转换为 pd.to_datetime