如何读取文本文件列以应用python数据框?

时间:2016-06-21 15:06:10

标签: python csv pandas dataframe

我有原始的文本文件:original.txt

$result

为了计算,我将此文件读作CSV

tmin,       tmax,     mean, fmin, fmax, stdev
0,        0.005000,    0,     0,    0,    0
0.005000, 0.010000,    0,     0,    0,    0

当我输入 df.columns

  

索引([u'tmin',你'tmax',你'是',你'fmin',你'fmax',你'stdev'],dtype ='对象')

什么是你'?和
我想从df.tmin [0],df.tmax [0],df.mean [0],df.fmin [0],df.fmax [0],df.stdev [0]中得到一些值。等等。

当我输入df.tmax [0]时,会出现以下错误。

>>>import pandas as pd
>>>import numpy as np
>>>from pandas import Series, DataFrame

>>>df=pd.read_csv('oringinal.txt')
>>>df 
      tmin   tmax   mean   fmin   fmax   stdev
0    0.000  0.005      0      0      0       0
1    0.005  0.010      0      0      0       0

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

列名称中有空格:

Index([u'tmin', u' tmax', u' mean', u' fmin', u' fmax', u' stdev'], dtype='object')

默认情况下read_csv使用逗号作为字段之间的分隔符来解析文件。 因此,df最终会以u' tmax'而不是u'tmax'的列结束。

要正确解析文件,请使用

df = pd.read_csv('oringinal.txt', sep=r',\s*')

代替。正则表达式模式,\s*匹配文字逗号,后跟0或更多的空白字符。

请注意,现在列名不包含空格:

In [117]: df.columns
Out[117]: Index(['tmin', 'tmax', 'mean', 'fmin', 'fmax', 'stdev'], dtype='object')

u'...'是Python2代表unicode string的方式。

正如UMax在a now deleted answer中指出的那样,您也可以使用

df = pd.read_csv('oringinal.txt', skipinitialspace=True)

这避免了使用正则表达式模式进行分隔符。由于只有'python'(解析器)引擎支持正则表达式,'c'引擎(理解skipinitialspace=True)速度更快,因此UMax的替代方案应该更快,尤其对于大文件。

答案 1 :(得分:0)

你'表示unicode字符串。

要获得tmin,tmax等值,只需输入

即可
df.tmin

表示整栏或

df['tmin']

您可以通过执行以下操作获取特定值:

df.tmin[0]

df['tmin'][0]