python pandas.column索引号到实际列名

时间:2017-12-19 12:15:31

标签: python pandas

我正在尝试处理用html(或xml.IDK)编写的xls数据 我试着这样做

df = pandas.read_html(r"filename.xls", skiprows=0)

它不是数据帧,只是列表。所以我这样做了

df = df[0]

在此之后,我可以做到,

print(df)

结果如下

    0   1   2
0   name    age gender
1   john    18  male
2   ryan    20  male

之前,我和其他xlsx文件做了类似的任务,这些文件工作得很好,但没有用这个。

例如,

for index, row in df.itterrows():
     target = str(row['gender'])
     if target = 'male':
          df.loc[index,'gender'] = 'Y'
     else:
          df.loc[index,'gender'] = 'N'

实际上,代码长达400行....

我希望我的数据框如下所示,以便我可以重新使用我已编写的代码。

    name    age gender
0   john    18  male
1   ryan    20  male

作为评论,我也添加了这个结果。 我试图跳过这一行

df = pandas.read_html(r"filename.xls", skiprows=1)

结果如下

    0   1   2
0   john    18  male
1   ryan    20  male

我该怎么做?

1 个答案:

答案 0 :(得分:2)

使用参数header=0

df = pandas.read_html(r"filename.xls", header=0)[0]

然后循环使用np.where

变化:

for index, row in df.itterrows():
     target = str(row['gender'])
     if target = 'male':
          df.loc[index,'gender'] = 'Y'
     else:
          df.loc[index,'gender'] = 'N'

为:

df['gender'] = np.where(df['gender'] == 'male', 'Y', 'N')