2024-10-01 13:28:57 发布
网友
如何计算由csv文件的BatchSize创建的数据帧的平均值
Input: A,1 B,2 B,1 C,2 A,1 B,3 B,1 C,1 A,1 B,2 B,1 C,3
我想将它们按4行(A、B、B、C)分组,并计算第2列的平均值
output: A, average(1,1,1) B, average(2,3,2) B, average(1,1,1) C, average(1,2,3)
假设列的名称为label, value,因为要对固定数量的行进行平均,所以可以进行重塑:
label, value
nrows=4 pd.DataFrame({'label': df['label'].iloc[:nrows], 'value':df['value'].values.reshape(-1,nrows).mean(axis=0) })
输出:
label value 0 A 1.000000 1 B 2.333333 2 B 1.000000 3 C 2.000000
首先为每个单独的批创建一个cumcount级别,这样您就可以将第一个“B”与第二个“B”分开(假设每个新组都以“a”开头)。然后对字母和新创建的组标签进行分组
cumcount
假设您的列标记为0和1:
0
1
import pandas as pd df = pd.read_clipboard(sep=',', header=None) df['gp'] = df.groupby([df[0].eq('A').cumsum(), 0]).cumcount() df.groupby([0, 'gp'])[1].mean()
0 gp A 0 1.000000 B 0 2.333333 1 1.000000 C 0 2.000000 Name: 1, dtype: float64
你可以groupby像这样计算它们,然后计算平均值
groupby
df.groupby([df.index%4, df[0]], as_index=False).mean().rename(columns={0:'labels', 1:'mean'})
labels mean 0 A 1.000000 1 B 2.333333 2 B 1.000000 3 C 2.000000
假设列的名称为
label, value
,因为要对固定数量的行进行平均,所以可以进行重塑:输出:
首先为每个单独的批创建一个
cumcount
级别,这样您就可以将第一个“B”与第二个“B”分开(假设每个新组都以“a”开头)。然后对字母和新创建的组标签进行分组假设您的列标记为
0
和1
:你可以
groupby
像这样计算它们,然后计算平均值相关问题 更多 >
编程相关推荐