python - 尝试对 PANDA 数据帧进行平均时出错
问题描述
我有一个来自 csv 文件的熊猫数据框,我需要对其中的 3 列进行平均,并将结果放在一个新列中。数据是这样的——
0 week 12 exp exp exp
1 Subject Group 1 2 3
2 255 HD 0 117.4 104.8 87.0
3 418 WT 0 61.2 56.1 97.9
4 300 HD 0 111.7 126.9 118.4
5 299 HD 0 50.7 37.8 30.6
6 258 WT 0 56.0 67.9 58.5
7 173 HD 0 76.2 131.7 119.5
我的代码是 -
with open('final results.csv', 'r') as frame:
date_again = csv.reader(frame)
frame = []
for line in date_again:
frame = frame + [line]
panda_file = pd.DataFrame(frame)
panda_file['average'] = frame[3:].mean(axis=1)
我得到的错误是 AttributeError: 'list' object has no attribute 'mean'
我该如何解决?
谢谢
解决方案
首先用于创建与参数一起DataFrame
使用,因为 csv 有 2 行标题用于列中:read_csv
header=[0,1]
DataFrame
MultiIndex
import pandas as pd
temp=u"""week,12,exp,exp,exp
Subject,Group,1,2,3
255,HD,0,117.4,104.8,87.0
418,WT,0,61.2,56.1,97.9
300,HD,0,111.7,126.9,118.4
299,HD,0,50.7,37.8,30.6
258,WT,0,56.0,67.9,58.5
173,HD,0,76.2,131.7,119.5"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), header=[0,1])
print (df)
week 12 exp
Subject Group 1 2 3
255 HD 0 117.4 104.8 87.0
418 WT 0 61.2 56.1 97.9
300 HD 0 111.7 126.9 118.4
299 HD 0 50.7 37.8 30.6
258 WT 0 56.0 67.9 58.5
173 HD 0 76.2 131.7 119.5
然后选择最后 3 列mean
:
df1 = df.iloc[:, -3:].mean(axis=1)
print (df1)
255 103.066667
418 71.733333
300 119.000000
299 39.700000
258 60.800000
173 109.133333
dtype: float64
并且对于新列需要分配给元组定义的新 MultiIndex 列的名称:
df[('exp', 'mean')] = df.iloc[:, -3:].mean(axis=1)
print (df)
week 12 exp
Subject Group 1 2 3 mean
255 HD 0 117.4 104.8 87.0 103.066667
418 WT 0 61.2 56.1 97.9 71.733333
300 HD 0 111.7 126.9 118.4 119.000000
299 HD 0 50.7 37.8 30.6 39.700000
258 WT 0 56.0 67.9 58.5 60.800000
173 HD 0 76.2 131.7 119.5 109.133333
但是为了简化,可以展平列:
df.columns = df.columns.map('_'.join)
print (df)
week_Subject 12_Group exp_1 exp_2 exp_3
255 HD 0 117.4 104.8 87.0
418 WT 0 61.2 56.1 97.9
300 HD 0 111.7 126.9 118.4
299 HD 0 50.7 37.8 30.6
258 WT 0 56.0 67.9 58.5
173 HD 0 76.2 131.7 119.5
df['exp_mean'] = df.iloc[:, -3:].mean(axis=1)
print (df)
week_Subject 12_Group exp_1 exp_2 exp_3 exp_mean
255 HD 0 117.4 104.8 87.0 103.066667
418 WT 0 61.2 56.1 97.9 71.733333
300 HD 0 111.7 126.9 118.4 119.000000
299 HD 0 50.7 37.8 30.6 39.700000
258 WT 0 56.0 67.9 58.5 60.800000
173 HD 0 76.2 131.7 119.5 109.133333
推荐阅读
- laravel - Laravel 授权调用错误策略
- javascript - 在输入标签中使用组件中的变量
- list - 从列表中循环 flextable 不会在 Word 中创建表格
- c# - 如何从 Redis 分区中获取所有密钥?
- python - Pandas 获取行的最小值并存储相应的索引
- java - 为什么 JGit Push 总是返回“auth falied”
- php - 回显字符串并不总是显示单个引号
- android-studio - 连接失败(连接重置)。请检查网络连接,然后在 Android Studio 中重试
- python - Tensorflow Keras 预测返回错误形状的输出
- python - 如何使用 Windows 10 在 anaconda 上安装 boost python