我有一个csv文件。 一列是某个城镇的平均海拔高度列表。 例如,他的一个元素可以是[571.0,428.0,600.0,410.0,588.0,520.0,649.0,374.0]
当我这样做时:
data=pd.read_csv('test.csv', sep=";", encoding="utf-8-sig",dtype={'Mean_Altitude':list})
a=data['Mean_Altitude'][0]
print a
print type(a)
我明白了:
[571.0, 428.0, 600.0, 410.0, 588.0, 520.0, 649.0, 374.0]
<type 'unicode'>
我想要一个浮动列表....不是unicode或字符串......
你知道我怎么做吗?
答案 0 :(得分:2)
这是一个想法。在ast.literal_eval
converters
参数中使用pd.read_csv
将字符串txt
视为我们的示例csv
from io import StringIO
import pandas as pd
import ast
txt = """A|Mean_Altitude|B
1|[571.0, 428.0, 600.0, 410.0, 588.0, 520.0, 649.0, 374.0]|X
2|[571.0, 428.0, 600.0, 410.0, 588.0, 520.0, 649.0, 374.0]|Y"""
converters = {'Mean_Altitude': ast.literal_eval}
df = pd.read_csv(StringIO(txt), sep='|', converters=converters)
print(df)
A Mean_Altitude B
0 1 [571.0, 428.0, 600.0, 410.0, 588.0, 520.0, 649... X
1 2 [571.0, 428.0, 600.0, 410.0, 588.0, 520.0, 649... Y
Mean_Altitude
是一列列表
df.Mean_Altitude.loc[0][2]
600.0
type
type(df.Mean_Altitude.loc[0])
list
答案 1 :(得分:0)
您可以删除[],然后在,
s = '[571.0, 428.0, 600.0, 410.0, 588.0, 520.0, 649.0, 374.0]'
[float(substring) for substring in s[1:-1].split(', ')]
如果您想确定字符串确实是一个列表,可以使用正则表达式
进行检查