Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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_Mean_Calculated Columns - Fatal编程技术网

Python 如何按列名的一部分分组,并聚合平均值?

Python 如何按列名的一部分分组,并聚合平均值?,python,pandas,mean,calculated-columns,Python,Pandas,Mean,Calculated Columns,我可以取两列的平均值,并将其作为一个新列返回,但我不知道如何对原始数据所具有的特定约定中的所有列执行此操作。目标是平均A1和D1、…、A12和D12等 我尝试了以下内容的不同迭代,但如果我不指定精确的列,它将不起作用 import pandas as pd df = pd.DataFrame({'Time': [0.1, 0.2, 0.3], 'A1': [1000, 2000, 3000], 'A12': [1000

我可以取两列的平均值,并将其作为一个新列返回,但我不知道如何对原始数据所具有的特定约定中的所有列执行此操作。目标是平均A1和D1、…、A12和D12等

我尝试了以下内容的不同迭代,但如果我不指定精确的列,它将不起作用

import pandas as pd
df = pd.DataFrame({'Time': [0.1, 0.2, 0.3], 
                   'A1': [1000, 2000, 3000],
                   'A12': [1000, 2000, 3000],
                   'B1': [4000, 5000, 6000],
                   'B12': [4000, 5000, 6000],
                   'D1': [40000, 50000, 42000],
                   'D12': [40000, 50000, 42000]})

for column in d.columns:
    if column.startswith('A') and column.startswith('D'):
        d= (d[['A1', 'D1']].iloc[:].mean(axis=1))
  • 如注释中所述,
    column.startswith('A')和column.startswith('D')
    永远不会为真
  • 注释中的解决方案很接近,但切片位置不正确,它是所有列的平均值,而不仅仅是
    A
    D
  • [1://code>在第一个字符后开始切片(例如
    A1://code>是
    1
  • 在本例中,创建with以仅查找感兴趣的列,
    a
    D
    • 使用了
      .contains
      ,因为它可以识别正则表达式模式,而不能识别
  • 仅对所需列执行以下操作:
    • df[cols].groupby(df[cols].columns.str[1:],axis=1)
#选择带有A或D的列
cols=df.columns[df.columns.str.contains('A | D')]
dfm=df.join(df[cols].groupby(df[cols].columns.str[1:],axis=1.mean().astype(float).添加前缀('AD\u-mean_'))
时间A1 A12 B1 B12 D1 D12平均值1平均值12
0   0.1  1000  1000  4000  4000  40000  40000    20500.0     20500.0
1   0.2  2000  2000  5000  5000  50000  50000    26000.0     26000.0
2   0.3  3000  3000  6000  6000  42000  42000    22500.0     22500.0