在pandas数据帧上使用operator chaining来读取数据,删除不需要的列,重命名列和读取几行

时间:2017-01-05 08:22:57

标签: excel python-2.7 pandas select multiple-columns

我有一个数据集可供阅读,并在最终使用前对数据进行一些清理。

我知道如何通过以下单独的独立步骤来做到这一点:

    data = pd.read_excel('C:\Users\pappu.a.kumar\Documents\data\coursera\python\Energy Indicators.xls',skiprows=17, skip_footer=0)
    del data['Unnamed: 0']
    del data['Unnamed: 1']
    data.columns = ['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']
    fdata = data.ix[:226]

现在我想使用运算符链接执行所有这些步骤。我的第一次尝试如下:

    data = (pd.read_excel('C:\Users\pappu.a.kumar\Documents\data\coursera\python\Energy Indicators.xls',skiprows=17, skip_footer=0)
      .(del data['Unnamed: 0'])
      .(del data['Unnamed: 1'])
      .(columns = ['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable'])
      .(ix[:226]))

但是这段代码产生了以下错误:

  

档案“”,第3行

     

。(del data ['Unnamed:0'])

     

^

     

SyntaxError:语法无效

我不知道我在做什么在逻辑上是可能的。如果可能,将非常感谢对正确文档或代码本身的任何引用。

1 个答案:

答案 0 :(得分:3)

如果未命名列的位置仍然相同,请使用read_excel中的参数names设置新列名称,然后按drop删除不必要的列。如需选择,请使用.iloc[226].head(226).ix(226)

#2 last columns are unnecessary - 2 last values of list in parameter names are 'tmp1' and 'tmp2'
data = pd.read_excel('C:\Users\pappu.a.kumar\Documents\data\coursera\python\Energy Indicators.xls',skiprows=17, skip_footer=0, names=['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable', 'tmp1', 'tmp2'])
         .drop(['tmp1','tmp2'], axis=1)
         .head(226)

另一种可能的解决方案是重命名列:

data = pd.read_excel('C:\Users\pappu.a.kumar\Documents\data\coursera\python\Energy Indicators.xls',skiprows=17, skip_footer=0)
         .drop(['Unnamed: 0','Unnamed: 1'], axis=1)
         .rename(columns={'firstcol':'Country', 'secondcol': 'Energy Supply', ...})
         .head(226)