我正在尝试将Pandas Dataframe分组为2天的存储桶。例如,如果我执行以下操作:
df = pd.DataFrame()
df['action_date'] = ['2017-01-01', '2017-01-01', '2017-01-03', '2017-01-04', '2017-01-04', '2017-01-05', '2017-01-06']
df['action_date'] = pd.to_datetime(df['action_date'], format="%Y-%m-%d")
df['user_name'] = ['abc', 'wdt', 'sdf', 'dfe', 'dsd', 'erw', 'fds']
df['number_of_apples'] = [1,2,3,4,5,6,2]
df = df.groupby(['action_date', 'number_of_apples']).sum()
我得到一个按action_date分组的数据框,每天有number_of_apples。
但是,如果我想以2天的时间段查看数据帧,我该怎么办呢?然后,我想分析每个date_chunk的number_of_apples,方法是为2017-01-01&的日期创建新的数据帧。 2017-01-03,另一个2017-01-04& 2017-01-05,然后是2017-01-06的最后一个,或者只是重新组合并在其中工作。
编辑:我最终希望根据每天大块的苹果数量来制作用户列表,所以不想得到每天大块苹果的总和。抱歉混乱!提前谢谢!
答案 0 :(得分:1)
尝试使用TimeGrouper
分组两天。
>>df.index=df.action_date
>>dg = df.groupby(pd.TimeGrouper(freq='2D'))['user_name'].apply(list) # 2 day frequency
>>dg.head()
action_date
2017-01-01 [abc, wdt]
2017-01-03 [sdf, dfe, dsd]
2017-01-05 [erw, fds]
答案 1 :(得分:1)
您可以使用CURLMOPT_MAX_TOTAL_CONNECTIONS:
print (df.resample('2D', on='action_date')['number_of_apples'].sum().reset_index())
action_date number_of_apples
0 2017-01-01 3
1 2017-01-03 12
2 2017-01-05 8
编辑:
print (df.resample('2D', on='action_date')['user_name'].apply(list).reset_index())
action_date user_name
0 2017-01-01 [abc, wdt]
1 2017-01-03 [sdf, dfe, dsd]
2 2017-01-05 [erw, fds]