python - 如何计算csv中一行列表的平均值?
问题描述
我在 CSV 文件中有这样的数据;
x Y
[2,3,4] [3.4,2.5,3.1]
[4,5,2] [6.2,7.5,9.7]
[2,6,9] [4.6,2.5,2.4]
[1,3,6] [8.9,7.5,9.2]
我想连续计算每个列表的平均值
x Y
[2,3,4] < mean [3.4,2.5,3.1] < mean
[4,5,2] < mean [6.2,7.5,9.7] < mean
[2,6,9] < mean [4.6,2.5,2.4] < mean
[1,3,6] < mean [8.9,7.5,9.2] < mean
并将平均值输出到 CSV 文件。
如何使用 python (pandas) 实现它?
编辑
经过一番研究,我找到了解决上述问题的方法;
import csv
import pandas as pd
import numpy as np
from ast import literal_eval
#csv file you want to import
filename ="xy.csv"
fields = ['X','Y'] #field names
df = pd.read_csv(filename,usecols=fields,quotechar='"', sep=',',low_memory = True)
df.X = df.X.apply(literal_eval)
df.X = df.X.apply(np.mean) #calculates mean for the list in field 'X'
print(df.X) #print result
df.Y = df.Y.apply(literal_eval)
df.Y = df.Y.apply(np.mean) #calculates mean for the list in field 'Y'
print(df.Y)
解决方案
通过应用映射:
# df = df.applymap(lambda x: sum(eval(x))/ len(eval(x)))
df = df.applymap(np.mean) # suggested by alex
df = df.applymap(lambda x: sum(x)/ len(x))
输出:
x Y
0 3.000000 3.000000
1 3.666667 7.800000
2 5.666667 3.166667
3 3.333333 8.533333
推荐阅读
- jquery - 当页面在jquery上滚动到顶部时如何制作动画?
- cuda - 是否可以在 GPU 上有效地计算具有任意插入的元胞自动机?
- flask - 从 celery 任务创建的任务被创建了两次
- c# - 使用 Windows 身份验证在 .NET Core 2.1 中扩展 IPrincipal
- node.js - 从 accessSync 返回 ENOENT 以外的值
- html-email - Outlook中的mso-line-height剪切图像
- javascript - 当我们有多个过滤器时,对数据进行“OR”操作的 angularjs 过滤器
- java - Firebase 和 RecyclerView:setter 和 switch 的问题
- node.js - 列出所有需要/导入特定文件的文件
- r - 从数据框中提取行并在 R 中作为单行输出