python - 在 Python 中加入文件时如何删除标题名称?
问题描述
正如这篇文章所建议的那样,我尝试过使用 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)
解决方案
这里的问题是您没有像您想象的那样读取文件;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
有了这个,你的连接结果应该是你想要的。
推荐阅读
- android - SQLite 如何将列的所有字符串内容添加到单个字符串(带条件)
- php - 尝试导入文件
- android - Retrofit2:将 post 参数添加到拦截器中
- python - Flask 应用程序中的子资源完整性
- azure-active-directory - Azure AD B2C 序列化 cookie 中的 StringCollection 声明
- python - 以 minio 作为后端的 Django-Storages S3
- javascript - React 应用程序上的响应式布局
- java - Spring-Data-Elasticsearch 在后台使用什么 Elasticsearch 客户端?
- docker - 后台进程运行时 Docker --rm 不清理
- c# - aspx.net 中的多个事件