read_csv列编码

时间:2014-02-01 06:19:00

标签: python csv encoding pandas

我对python很新。

我正在尝试使用python自动化建筑能耗数据的一些数据分析。 我正在使用python 2.7.3pandas 0.12Canopy with qtconsole

以下是我要遵循的步骤:

  1. 将我的模拟软件中的数据粘贴到excel
  2. 从Excel导出到csv
  3. 在pandas dataframe
  4. 中导入csv
  5. 执行我的分析
  6. 在交互式控制台中,我编写以下代码

    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]'

    我做了很多研究,但我无法理解它。

    我试图指定各种编码但我并不真正了解它发生了什么。

    我被困了一天多。

    你能帮忙吗?

2 个答案:

答案 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)

它按预期工作,上标不会丢失。

干杯