我的数据帧的第5列是一个浮动列表。我想用列表中的最大值替换列表。我怎么能这样做
我正在尝试此操作,但出现了一个错误:
import pandas as pd
import numpy as np
colNames = ['unixTime', 'sampleAmount','Time','samplingRate', 'Data']
data = pd.read_csv("project_fan.csv", sep = ';', error_bad_lines = False, names = colNames)
print(data.head())
data['Data'] = [float(x) for x in data.Data.values]
data['Data'] = [np.array(x).mean()for x in data.Data.values]
Traceback (most recent call last):
File "new.py", line 9, in <module>
data['Data'] = [float(x) for x in data.Data.values]
ValueError: could not convert string to float: [1618.6294555664062, 1619.0826416015625, 1620.0897216796875, 1620.0393676757812, 1620.0393676757812, 1620.240783691406, 1620.391845703125, 1620.0897216796875, 1619.435119628906, 1620.4925537109373, 16
还尝试使用astype(float.mean),但不起作用
示例数据帧:
unixTime sampleAmount Time samplingRate Data
0 1.556891e+09 16384 340 48188.235294 [1618.6294555664062,1619.0826416015625,1620.489622]
1 1.556891e+09 16384 341 48046.920821 [1619.78759765625,1619.0826416015625,1620.49754]
从错误消息中可以清楚地看到,“data”列中的数据存储为一个字符串,其中包含类似于浮点列表的Python表示形式。这是很自然的,因为它来自CSV文件,而CSV文件不能在单个列中表示数字列表
你可以用
type(data.Data[0])
检查一下,我希望它会告诉你str
因为它看起来像一个浮点列表的Python表示,所以一个好方法是使用Python的模块来计算Python文本,这可以通过^{} function 实现。该函数能够解释Python的基本类型(整数、浮点、字符串、列表、元组、dict),并且是解析来自外部源(如CSV文件)的内容的安全方法
因此,您可以使用以下命令将其转换为实际的浮动列表:
另一种方法是声明此列包含JSON编码的数据,并将其解析为JSON。在本例中,对于浮点数列表,Python和JSON表示都是等效的,因此这两种方法都可以工作。(JSON解码可能会更快,JSON通常比一般的Python文本语法更简单。)
要将其解码为JSON(替代上述内容):
此时(在Python或JSON转换之后),您可以对结果使用
np.mean
等函数,因为它只是一个浮点列表,不再是字符串:相关问题 更多 >
编程相关推荐