Pandas数据框架在2016年内按用户数量排名最高

时间:2017-06-10 01:27:33

标签: python pandas time-series ipython-notebook

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

应该为您提供所需的行。如果您可以发布样本数据集,那么测试它会更容易

答案 1 :(得分:1)

也许您可以尝试通过以下方式将列转换为datetime:

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

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

@ A-Za-z的答案更简洁,但如果列已经不是日期时间类型,您可以使用pd.to_datetime进行转换。