【发布时间】:2019-12-07 17:12:00
【问题描述】:
我有一个 python 脚本,它读取一堆 csv 文件并创建一个新的 csv 文件,其中包含读取的每个文件的最后一行。脚本是这样的:
import pandas as pd
import glob
import os
path = r'Directory of the files read\*common_file_name_part.csv'
r_path = r'Directory where the resulting file is saved.'
if os.path.exists(r_path + 'csv'):
os.remove(r_path + 'csv')
if os.path.exists(r_path + 'txt'):
os.remove(r_path + 'txt')
files = glob.glob(path)
column_list = [None] * 44
for i in range(44):
column_list[i] = str(i + 1)
df = pd.DataFrame(columns = column_list)
for name in files:
df_n = pd.read_csv(name, names = column_list)
df = df.append(df_n.iloc[-1], ignore_index=True)
del df_n
df.to_csv(r_path + 'csv', index=False, header=False)
del df
这些文件都有一个共同的名字结尾和一个真正的名字开头。结果文件没有扩展名,所以我可以做一些检查。 我的问题是文件的行数和列数不定,即使在同一个文件中,我也无法正确读取它们。如果我不指定列名,程序会假定第一行作为列名,这会导致某些文件中丢失很多列。另外,我尝试通过以下方式读取没有标题的文件:
df = pd.read_csv(r_path, header=None)
但它似乎不起作用。 我想上传一些文件作为示例,但我不知道。如果有人知道我会很乐意这样做
【问题讨论】:
-
您是否有理由需要使用 pandas?你真的只对每个 csv 文件的最后一行感兴趣吗?
-
是的。我只想要每个文件的最后一行。
-
那么你应该能够在没有熊猫的情况下做到这一点。谷歌搜索
get last line of file in python应该会给你很多更好的方法 -
Pandas 是我发现读取 csv 的唯一方法,因为其他所有方法都会删除分隔符,这是我不想要的。可能还有更多可用的,但不幸的是我没有找到它们。
-
@GeorgeTsaki CSV 文件只是文本。行是一个字符串,只需将其写入文件即可。你可以用几行 Python 完成所有的 pandas 代码。