我能够读取一个看起来像这样的文件'data.csv':
Time, Upper Layer Temperature,...,
0, 450,...,
...
使用pandas:
data=pd.read_table('data.csv',header=0,sep=',')
为了绘图,我似乎无法正确使用语法:
pl.plot(data.Time,data.'Upper Layer Temperature',label="ULT")
当列名有多个以空格分隔的单词时,能够按列名绘制的正确方法是什么?
答案 0 :(得分:1)
您可以使用字典样式访问而不是属性样式,即data["Upper Layer Temperature"]
。例如:
>>> df = pd.DataFrame({"A": [1,2,3], "B has a space": [10,20,30]})
>>> df
A B has a space
0 1 10
1 2 20
2 3 30
[3 rows x 2 columns]
>>> df["B has a space"]
0 10
1 20
2 30
Name: B has a space, dtype: int64
>>> plt.plot(df["A"], df["B has a space"], label="fred")
[<matplotlib.lines.Line2D object at 0xb75106c>]
但是请注意,你在文件中阅读的方式,你可能会在列名中有一个额外的空格:
>>> !cat data.csv
Time, Upper Layer Temperature,...,
0, 450,...,
>>> data=pd.read_table('data.csv',header=0,sep=',')
>>> data.columns
Index([u'Time', u' Upper Layer Temperature', u'...', u'Unnamed: 3'], dtype='object')
您可以使用skipinitialspace=True
来避免这种情况:
>>> data=pd.read_table('data.csv',header=0,sep=',',skipinitialspace=True)
>>> data.columns
Index([u'Time', u'Upper Layer Temperature', u'...', u'Unnamed: 3'], dtype='object')