2017-07-26 45 views
2

分离串我有我的数据作为串供给的文本文件,使用Python的下列行:在格式阅读在一个文本文件,并且通过托架在Python

file = open("C:\\Users\\Me\\Desktop\\data.txt", "a") 
    file.writelines(str(mathfunction(readField()))) 
    file.flush() 
    file.close() 

如下:

enter image description here

每个输入到文本文件中包含的三个项目的数组。

我的目标是从每个输入中提取第三项,将其转换为浮点数,然后将这些值存储在新数组中。因此,理想情况,在上述情况下,阵列将包含:

[1.0087890625, 0.4404296875, 0.4404296875]

我试过如下:

data = pd.read_csv("C:\\Users\\User\\Desktop\\data.txt", sep="]", header = None) 
data.head() 

enter image description here

和它看起来像一个返回的数据字符串格式。

为了隔离每个子阵列中的第三项并将其全部存储在一个数组中,我应该采取的下一步是什么?

编辑:这里是data.txt中

[0.0263671875, 0.03515625, 1.0087890625][0.01171875, 0.0146484375, 0.4404296875][0.01171875, 0.0146484375, 0.4404296875] 
+0

如果使用'sep =“] | [”'?或者'sep =“(] | [)|(]&[)”'? –

+0

请您可以发布'df.head()'的文本副本吗? –

+1

也许下一步就是观看这个[2015 Pycon USA谈话](http://pandas.pydata.org/talks.html#pycon-us-2015)。 – wwii

回答

2

然后,您可以通过','逗号分割一些数据在数据读取之后:

data = pd.read_csv("C:\\Users\\User\\Desktop\\data.txt", sep="]", header = None) 
data = data.iloc[0] 
data = data.apply(lambda x: x.split(',')[2]).astype(float).tolist() 

如果你想保留数据在熊猫系列中,只需删除上面的tolist()部分即可。这里有一个例子:

data = pd.DataFrame([['[1,2,3','[3,4,5','[4,5,6']]) 
print(data) 
     0  1  2 
0 [1,2,3 [3,4,5 [4,5,6 

data = data.iloc[0] 
data = data.apply(lambda x: x.split(',')[2]).astype(float).tolist() 
print(data) 
[3.0, 5.0, 6.0] 
+0

读取数据时,您不能使用正则表达式分隔符吗?此外,这并没有摆脱支架在开始 –

+1

它应该摆脱开始括号,因为OP只对列表中的第3项感兴趣 – nanojohn

+1

哦,好点。我专注于错误的问题。很好的答案。 :) –

0

我会备份有点...
如果mathfunction(readField())产生列表的列表,写行csv文件是这样的:

for line in mathfunction(readField()): 
    line = ','.join(line) + '\n' 
    file.write(line) 

然后pd.read_csv()将产生更易于管理的数据框,并且您可以使用dtype参数在读取数据时将数据转换为浮点数据。 。