这是代码:
查找每天有多少用户提交。必须将其从最新到较旧进行排序。
import pandas as pd
a=pd.read_csv("dataset.txt")
b=a[['date_su','users']]
b.sort_values(['date_su'],ascending=False).groupby(['date_su','users'])['date_su'].count()
结果是这样的:
date_su users
1/8/2018 Jk_28_j 1
KT1w_19_MN 33
KT1w_19_USER 9
KT1w_19_USER2 5
KT1w_19_USER3 7
KT1w_19_USER32 1
KT1w_19_USER35 8
KT1w_19_USER36 7
KT1w_19_USER8 8
KT1w_19_USER9 6
MRS sffdf 1
SINBAo 1
VIJJHxAFNI 1
W7jj24693U242 1
WW2pt710U455 1
10/7/2018 idMIa9p0c 1
KTw_19_MNG1 4
KTw_19_MNG2 18
KTw_19_USER1 4
KTw_19_USER22 8
KTw_19_USER32 7
KTw_19_USER33 5
KTw_19_USER34 1
KTw_19_USER35 3
10/8/2018 KTw_19_MNG1 8
KTw_19_USER1 5
KTw_19_USER2 2
KTw_19_USER3 3
最后一行似乎不是按日期排序,而是按用户排序。尽管显示为sort_values(['date_su']
。如何使其按预期工作?
答案 0 :(得分:1)
我认为需要通过read_csv
中的参数parse_dates
将值转换为日期时间,并在必要时还添加参数dayfirst=True
:
b=pd.read_csv("dataset.txt",
parse_dates=['date_su'],
usecols=['date_su','users'],
dayfirst=True)
然后对MultiIndex
进行排序:
b.groupby(['date_su','users'])['date_su'].count().sort_index(level=[0,1], ascending=[False, True])
或者将ascending=False
与参数sort=False
一起使用,以避免在groupby中排序:
b.sort_values(['date_su'],ascending=False).groupby(['date_su','users'], sort=False)['date_su'].count()