我有一个df:

field           category            2022-01-10      2022-01-17      2022-01-24    2022-01-31 
A               Chair               50              100             200           150
B               Chair               75              15              57            75   
C               Chair               0.57            0.64            0.4           0.47
A               Table               50              100             200           150
B               Table               75              15              57            75   
C               Table               0.57            0.64            0.4           0.47
A               Mirror              50              100             200           150
B               Mirror              75              15              57            75   
C               Mirror              0.57            0.64            0.4           0.47

我试着按field分组,或者干脆go 掉category列,将每周的值聚合起来,结果如下所示:

field       2022-01-10      2022-01-17      2022-01-24    2022-01-31 
A           50+50+50        100+100+100     200+200+200   150+150+150
B           75+75+75        15+15+15        57+57+57      75+75+75
C           np.mean([0.57, 0.57, 0.57])     # each weeks average of field C

我希望每周字段的平均值为A & B.

我试过:

我相信这个问题可以通过删除一个category列,然后基于field列转换值来解决,但我不确定这是如何工作的.

推荐答案

创建一组要应用的函数,然后平放数据帧,并按fieldvariable(日期)列分组.使用第一个索引groupby获得正确的函数.最后reshape 你的数据框架.

aggfuncs = {'A': lambda x: np.sum(x),
            'B': lambda x: np.sum(x),
            'C': lambda x: np.mean(x)}

out = df.melt(['field', 'category']).groupby(['field', 'variable'])['value'] \
        .apply(lambda x: aggfuncs[x.name[0]](x)).unstack() \
        .rename_axis(columns=None).reset_index()
print(out)

# Output
  field  2022-01-10  2022-01-17  2022-01-24  2022-01-31
0     A      150.00      300.00       600.0      450.00
1     B      225.00       45.00       171.0      225.00
2     C        0.57        0.64         0.4        0.47

Python相关问答推荐

如何循环循环的每个元素并过滤掉Python rame中的条件

根据多列和一些条件创建新列

Python中的Pool.starmap异常处理

机器人与Pyton Minecraft服务器状态不和

如何通过多2多字段过滤查询集

@Property方法上的inspect.getmembers出现意外行为,引发异常

Django管理面板显示字段最大长度而不是字段名称

我从带有langchain的mongoDB中的vector serch获得一个空数组

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

Gekko:Spring-Mass系统的参数识别

_repr_html_实现自定义__getattr_时未显示

Pandas 都是(),但有一个门槛

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

梯度下降:简化要素集的运行时间比原始要素集长

实现自定义QWidgets作为QTimeEdit的弹出窗口

递归访问嵌套字典中的元素值

迭代嵌套字典的值

如何在图中标记平均点?

在matplotlib中删除子图之间的间隙_mosaic

python panda ExcelWriter切换动态公式到数组公式