Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用日期列按月、周分组_Python_Pandas - Fatal编程技术网

Python 使用日期列按月、周分组

Python 使用日期列按月、周分组,python,pandas,Python,Pandas,我有一个包含以下列的数据框: user,dates,quantity,location 而我想的是有用的分组程序 pd.to_numeric(x['quantity'], errors='coerce').groupby(x['user']).sum().reset_index() 给出了: user quanity 0 user_01 8900.0 1 user_02 0.0 2 user_03 0.0 3 user_04

我有一个包含以下列的数据框:

user,dates,quantity,location
而我想的是有用的分组程序

 pd.to_numeric(x['quantity'], errors='coerce').groupby(x['user']).sum().reset_index()
给出了:

    user      quanity
0   user_01    8900.0
1   user_02       0.0
2   user_03       0.0
3   user_04     232.0
4   user_05      21.0
5   user_06     110.0
6   user_07     240.0
7   user_08   20500.0
我如何做到这一点,包括
位置
日期

示例:能够在每周检查或每月检查之间轻松切换

注意:“日期”列为对象类型

样本数据

     dates      user   quantity  location
0   2018-09-03  user_01 23          GR
1   2018-09-03  user_01 -           GR
2   2018-09-03  user_02 3           SW
3   2018-09-03  user_03 -           POR
4   2018-09-03  user_04 222         PAN
5   2018-09-03  user_04 -           PAN

您可以按多列分组并聚合
sum

x['quantity'] = pd.to_numeric(x['quantity'], errors='coerce')
df = x.groupby(['dates','user','location'], as_index=False)['quantity'].sum()
print (df)
        dates     user location  quantity
0  2018-09-03  user_01       GR      23.0
1  2018-09-03  user_02       SW       3.0
2  2018-09-03  user_03      POR       0.0
3  2018-09-03  user_04      PAN     222.0
编辑:您可以通过
MS
月初使用-检查:

或者使用或者 或 :


您可以添加一些具有预期输出的示例输入数据吗?好的,请稍等。如果我在问题中复制它们,或者您想要一个文件,那么就足够了吗?最好是将示例数据添加到问题中。e、 g.5行。见问题中的更新。我需要每周、每月进行检查,诸如此类的事情。如有需要,按月分组,在日期(09)的第二部分分组。清楚了吗?我如何在周、月等进行此操作?按月检查,这是九月?是否可以将09改为九月?当然,将
x['dates'].dt.month
改为
x['dates'].dt.strftime('%b')
,检查daymm。这太神奇了。
x['dates'] = pd.to_datetime(x['dates'])

x['quantity'] = pd.to_numeric(x['quantity'], errors='coerce')
df = (x.groupby([pd.Grouper(key='dates', freq='MS'),'user','location'])['quantity']
       .sum()
       .reset_index())

print (df)
       dates     user location  quantity
0 2018-09-01  user_01       GR      23.0
1 2018-09-01  user_02       SW       3.0
2 2018-09-01  user_03      POR       0.0
3 2018-09-01  user_04      PAN     222.0
df = x.groupby([x['dates'].dt.month,'user','location'])['quantity'].sum().reset_index()
print (df)
   dates     user location  quantity
0      9  user_01       GR      23.0
1      9  user_02       SW       3.0
2      9  user_03      POR       0.0
3      9  user_04      PAN     222.0