我有原始的文本文件: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
如何解决这个问题?
答案 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]