在Python中加入文件时,如何删除标头名称?

时间:2019-03-04 16:21:03

标签: python pandas

我曾尝试根据this帖子中的建议使用numpy.concatonate

我正在处理的文件看起来像这样。

>>> df = pd.read_html(file)
>>> df.head()
            0            1                        2
0          Id         Date                   Reason
1         161  04-Mar-2019                Cancelled
2         843  04-Mar-2019                Cancelled
3         042  04-Mar-2019                Cancelled
4         247  04-Mar-2019                Cancelled 

这是我的代码,它弹出的csv文件仍然具有连接文件的列名。

files = sorted(glob.glob(path + "Export*"+ extension))
all_data = []
if len(files) == 1: # check if there's only 1 file
    df = pd.read_html(files[0])[0]
    df.to_csv(path + filename + ".csv", index=False, header=False)

first = files.pop(-1) # order the files
files.insert(0, first)
for file in files:
    df = pd.read_html(file)[0]
    all_data.append(df.values)       


df = pd.DataFrame(np.concatenate(all_data), columns=pd.read_html(first)[0].columns)
df.to_csv(path + filename + ".csv", index=False, header=False)

1 个答案:

答案 0 :(得分:1)

这里的问题是您没有以自己的方式读文件; first[0].columns实际上是['0', '1', '2']而不是['Id', 'Date', 'Reason'](如您所愿)。

在没有正确识别列的情况下,您的呼叫

pd.DataFrame(np.concatenate(all_data), columns=pd.read_html(first[0].columns))

不会表现出您想要的行为。

使用read_html读取数据时,您将要确保指定列名在文件中的位置。您可以使用header参数。

因此,您可能希望像df = pd.read_html(file, header=1)之类的形式读取数据。

被读取后,您的数据应如下所示。

df.head()
    Id         Date     Reason
1  161  04-Mar-2019  Cancelled
2  843  04-Mar-2019  Cancelled
3   42  04-Mar-2019  Cancelled
4  247  04-Mar-2019  Cancelled

有了这个,连接的结果应该如您所愿。