读取csv,其中一列是python中的列表



我在csv文件中有以下几行

[0 1 2 3 4 5],2145004.491585603,5.784000000019773e-05
[0 1 2 3 4 5],4986045.063898375,1.771400000016854e-05
[0 1 2 3 4 5],2185254.9265346257,1.468399999993153e-05

正如您所看到的,第一个条目是一个整数列表。如何读取数据,从而得到一个列表(或numpy.array(和2个浮点值?我尝试使用np.genfromtxt,但不知道如何正确处理生成的字节。

如果没有优雅的解决方案,有没有更好的方法将数组保存在一列中?

我注意到这个列表不是一个实际的列表(项目之间没有逗号(,所以这应该可以在中工作

In [1]: with open('data.csv') as f:
...:     reader = csv.reader(f)
...:     data = []
...:     for line in reader:
...:         lst_of_nums = [int(x) for x in line[0][1:-1].split()]
...:         data.append([lst_of_nums, float(line[1]), float(line[2])])
...:
In [2]: data
Out[2]:
[[[0, 1, 2, 3, 4, 5], 2145004.491585603, 5.784000000019773e-05],
[[0, 1, 2, 3, 4, 5], 4986045.063898375, 1.771400000016854e-05],
[[0, 1, 2, 3, 4, 5], 2185254.9265346257, 1.468399999993153e-05]]

如果它是一个有效的列表,你可以做

import csv
from ast import literal_eval
In [1]: with open('data.csv') as f:
...:     reader = csv.reader(f)
...:     data = []
...:     for line in reader:
...:         data.append([literal_eval(line[0]), float(line[1]), float(line[2])])
...:
In [2]: data
Out[2]:
[[[0, 1, 2, 3, 4, 5], 2145004.491585603, 5.784000000019773e-05],
[[0, 1, 2, 3, 4, 5], 4986045.063898375, 1.771400000016854e-05],
[[0, 1, 2, 3, 4, 5], 2185254.9265346257, 1.468399999993153e-05]]

您不需要file,只需尝试此技巧即可。我知道这很有趣,但分享我的阅读方式。

简单地将数据作为CCD_ 3&阅读。

import io
import pandas as pd

csv_data_as_str = '''[0 1 2 3 4 5],2145004.491585603,5.784000000019773e-05
[0 1 2 3 4 5],4986045.063898375,1.771400000016854e-05
[0 1 2 3 4 5],2185254.9265346257,1.468399999993153e-05 '''
df = pd.read_csv(io.StringIO(csv_data_as_str), sep=",",header = None)

print(df)

输出

0             1         2
0  [0 1 2 3 4 5]  2.145004e+06  0.000058
1  [0 1 2 3 4 5]  4.986045e+06  0.000018
2  [0 1 2 3 4 5]  2.185255e+06  0.000015

如果您有形式为"[0 1 2 3 4 5]";如果有效数据是整数,则:

lv = '[0 1 2 3 4 5]'
mylist = list(map(int, lv[1:-1].split()))
print(mylist)

输出:

[0, 1, 2, 3, 4, 5]

相关内容

  • 没有找到相关文章

最新更新