【发布时间】:2021-08-18 19:17:10
【问题描述】:
我有一个带有多个变量的 pandas df,我想计算它的平均值。列以变量名作为前缀,变量级别作为后缀来命名。实际上,我得到了很多变量,每个变量有 30 个级别,但是有 2 个级别和 2 个变量,它看起来像这样:
[index, oneVariable_s1, oneVariable_s2, otherVariable_s1, otherVariable_s2]
数据可以这样生成:
data = [{'index':'p001', 'oneVariable_s1': 1, 'oneVariable_s2': 2, 'otherVariable_s1':3, 'otherVariable_s2':6},
{'index':'p002','oneVariable_s1':10, 'oneVariable_s2': 20, 'otherVariable_s1': 30, 'otherVariable_s2':6}]
df = pd.DataFrame(data).set_index('index')
df
有没有办法自动计算“_s1”到“_s30”之前具有相同变量名/相同前缀的所有列的平均值,这样我就不必写下所有变量名来计算平均值?到目前为止,我已经使用它来计算列的平均值:
df['oneVariable_mean'] = df.filter(like='oneVariable').mean(axis=1)
df['otherVariable_mean'] = df.filter(like='otherVariable').mean(axis=1)
这导致了我正在寻找的解决方案,但我需要输入所有变量名。
【问题讨论】:
-
您的问题完全不清楚如何帮助您。您需要提供更多详细信息,可能是人们可以运行的工作示例。
-
你的意思是什么类型的工作示例?我发布了数据结构和代码,它可以完成这项工作,但不是以自动化方式?
-
"数据的结构"`???不,你没有,你只是发布了一些列名。我无法复制你的代码并在 py 自己的电脑上运行它,这就是我所说的工作示例。
-
所以数据框中的列始终采用这种格式:
<var_name>_s<var_level>? -
我最初想在我的帖子中添加一个表格,但我不知道该怎么做。我添加了一个代码来生成一个基本的工作示例。
标签: python pandas dataframe mean