Python 3.x 在结果中按列分组
样本数据Python 3.x 在结果中按列分组,python-3.x,pandas,Python 3.x,Pandas,样本数据 id lat lon datetime values 0 A1 32.553644 -117.061603 2007-05-11 44.90 1 A1 32.553644 -117.061603 2007-05-12 44.92 2 A2 32.553644 -117.061603 2007-05-13 44.92 3 A2 32.553644 -117.061603 2007-05-14 44.91 4 A3 32
id lat lon datetime values
0 A1 32.553644 -117.061603 2007-05-11 44.90
1 A1 32.553644 -117.061603 2007-05-12 44.92
2 A2 32.553644 -117.061603 2007-05-13 44.92
3 A2 32.553644 -117.061603 2007-05-14 44.91
4 A3 32.553644 -117.061603 2007-05-15 44.92
我正在尝试按id、月份、年份分组,以获得值的月平均值列
下面的代码使用月平均值生成我的DF。问题是,我希望结果包括平均值包含的月份和年份
group_cols = ['id', 'lat', 'lon', df['datetime'].dt.month, df['datetime'].dt.year]
dfmean = df.groupby(group_cols, as_index=False)['values'].mean()
这将产生以下结果:
id lat lon mean
0 A1 32.553644 -117.061603 0.373333
1 A2 32.553644 -117.061603 0.460000
2 A3 32.553644 -117.061603 0.485484
注意:以上结果是在整个1m以上记录的数据集上得出的。因此,它与提供的样品不匹配。
我期望的结果如下所示:
id lat lon date mean
0 A1 32.553644 -117.061603 05-2007 0.373333
1 A2 32.553644 -117.061603 05-2007 0.460000
2 A3 32.553644 -117.061603 05-2007 0.485484
列的顺序是不相关的。我只需要它作为一个数据帧,这样我就可以通过df[column\u name]选择列了。
另请注意:月/年不必是一列。它也可以是带有月份的列和带有年份的列。每个平均值都应包含日期,这一点非常重要。IIUC
df['date']=df.datetime.dt.strftime('%Y-%m')
group_cols = ['id', 'lat', 'lon', 'date']
dfmean = df.groupby(group_cols, as_index=False)['values'].mean()
dfmean
Out[399]:
id lat lon date values
0 A1 32.553644 -117.061603 2007-05 44.910
1 A2 32.553644 -117.061603 2007-05 44.915
2 A3 32.553644 -117.061603 2007-05 44.920
非常感谢。这个解决方案非常有效。strftime()是我所缺少的。