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
。
我有一个包含列的数据框: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
。