我对python很新。
我正在尝试使用python自动化建筑能耗数据的一些数据分析。
我正在使用python 2.7.3
,pandas 0.12
,Canopy with qtconsole
以下是我要遵循的步骤:
dataframe
在交互式控制台中,我编写以下代码
import pandas as pd
rooms = pd.read_csv('IES Results - Rooms.csv', index_col='Room # (Real)')
systems = pd.read_csv('IES Results - Systems.csv',index_col='Room #')
all_values = pd.concat([rooms,systems],axis=1)
all_values = all_values.T.drop_duplicates().T
columns = [u'Room ID',u'Room Name',u'Floor Area (m²) (Real)',u'Volume (m³) (Real)']
selected_values = all_values[columns]
不幸的是我收到以下错误
KeyError: "[u'Floor Area (m\\xb2) (Real)' u'Volume (m\\xb3) (Real)'] not in index"
正如您所看到的,带有上标的所有列都没有被正确解释,并且在dataframe
中找不到它们。
写作时
all_values.columns
列标题在IPython
控制台中正确显示。然后我复制并粘贴我感兴趣的值,以创建“列”列表以传递给'selected_values = all_values[columns]'
我做了很多研究,但我无法理解它。
我试图指定各种编码但我并不真正了解它发生了什么。
我被困了一天多。
你能帮忙吗?
答案 0 :(得分:1)
好的,如果我这样做了,
1)摆脱Excel。 - 你需要它吗。为什么您的模拟程序不会自行转储数据?如果它不能代替粘贴到Excel,请将其粘贴到txt文件并从Python解析它
2)摆脱超级脚本 - 你真的需要上标吗?我会删除那些,至少在我的分析阶段,当需要某种演示时,我会恢复它们。
答案 1 :(得分:1)
经过一些测试后,我发现问题出现在我用来创建“列”的复制和粘贴中。
比较差异。
使用复制和粘贴
创建此“列”columns_cp = [u'Room ID',u'Room Name',u'Floor Area (m²) (Real)',u'Volume (m³) (Real)']
columns_cp
Out[29]:
[u'Room ID',
u'Room Name',
u'Floor Area (m\xb2) (Real)',
u'Volume (m\xb3) (Real)']
正如您所看到的,格式化已经消失。 m \ xb2和m \ xb3不正确。
更好的方法是执行以下操作
columns = [all_values.columns.tolist()[i] for i in [0,1,8,11]]
其中0,1,8,11是我感兴趣的列。 这是列
的输出columns
Out[30]:
['Room ID',
'Room Name',
'Floor Area (m\xc2\xb2) (Real)',
'Volume (m\xc2\xb3) (Real)']
正如您所看到的那样,编码确实没有丢失:
selected_values = all_values[columns]
In [32]: selected_values
Out[32]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 288 entries, 0 to 457
Data columns (total 4 columns):
Room ID 288 non-null values
Room Name 288 non-null values
Floor Area (m²) (Real) 288 non-null values
Volume (m³) (Real) 288 non-null values
dtypes: object(4)
它按预期工作,上标不会丢失。
干杯