【问题标题】:average of one columns一列的平均值
【发布时间】:2017-06-12 00:15:27
【问题描述】:

这是我的文件格式。我正在尝试对列进行平均,但出现如下所示的错误。谁能给我一些建议吗?

文件格式为:

      0.000      -2953.187     -11363.859     -14317.047
    500.000      -3178.028     -11301.687     -14479.715
   1000.000      -2973.863     -11309.533     -14283.396
   1500.000      -2964.465     -11294.120     -14258.584
   2000.000      -3066.929     -11240.302     -14307.231
   2500.000      -3156.522     -11223.589     -14380.111
   3000.000      -3230.069     -11573.224     -14803.293

脚本是:

import numpy as np
file = open('energy_MM.xvg', 'r')

x = []

for line in file: 
    cols=line.split()[1]
    x.append(float(cols[0]))
numpy.mean(x)

错误是:

            Traceback (most recent call last):
            File "binding.py", line 10, in <module>
            x.append(float(cols[0]))
            ValueError: could not convert string to float: '-'

【问题讨论】:

  • 你为什么不用熊猫?
  • Pandas 是一个强大的工具,在这里可以很好地工作。但是,这并不能回答 OP 的问题。您的数据文件中发生了一些事情。在某些时候,您有一个空格,后跟一个破折号,然后是另一个空格,这会导致在尝试转换为浮点数时抛出 ValueError。尝试在浮点转换之前添加打印语句以查看“x”是什么,或者在 Python 解释器中运行脚本并从那里开始工作。您所做的应该可以工作,但您的文件很可能格式不一致。

标签: python python-3.x numpy average


【解决方案1】:

使用熊猫:

import pandas as pd

df = pd.read_csv('energy_MM.xvg', sep="\s+", header=None)
df.mean()

这将输出以下内容:

0     1500.000000
1    -3074.723286
2   -11329.473429
3   -14404.196714
dtype: float64

其中左列对应于文件中的列名,使用header=None 选项将其分配给从0 开始的整数。

【讨论】:

  • 尊敬的先生,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 2018-07-12
相关资源
最近更新 更多