根据正则表达式模式对问题进行分组并使用 pandas 汇总分数

Group questions based on a regex pattern and aggregate scores using pandas

我正在尝试根据反馈的特征对汇总值进行分组。例如,以下代码创建了一个数据框,该数据框收集来自个人的信息以及他们对涉及特定年度接触点的问题的反馈分数。

import pandas as pd
import numpy as np
dummydf = pd.DataFrame({'ID': [2,15,32,4,9,12,16,10,3,7],
              '1-year feedback qs A': [3,2,3,4,3,2,1,3,4,5],
              '1-year feedback qs B': [1,1,2,4,np.NaN,3,3,3,2,5],
              '2-year feedback qs A': [2,2,3,4,3,5,3,2,2,4],
              '2-year feedback qs B': [2,3,3,3,4,5,3,np.NaN,5,5],
              'Gender': [0,0,0,1,0,1,1,0,0,1],
              'Location': ['py','py','py','va','jk','ce','ce','va','jk','jk']})
print(dummydf)

对于每个 ID,我需要将 1 年问题的值组合在一起作为平均总分,将 2 年问题的接触点组合在一起,依此类推,同时保持其余变量不变.实现结果的最佳方式是什么?

我试过的是-

groups = dummydf.groupby(by=['ID'])
groups.apply(lambda g: g[g.filter(regex='1-') == g.filter(regex='1-').mean()])

没有给我想要的结果

由于ID是唯一的,您不需要对它们进行分组。 您可以只使用:

for i in range(1,2):
  dummydf['mean_year_'+str(i)] = dummydf[[x for x in dummydf.columns if str(i) in x]].mean(axis=1)