从CSV文件中提取最后一行,并将其放在另一个文件名为Python的文件中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从CSV文件中提取最后一行,并将其放在另一个文件名为Python的文件中相关的知识,希望对你有一定的参考价值。
我在目录中有一个CSV文件列表:
file1.csv
file2.csv
file3.csv
文件的示例内容是:
value1 value2 value3
377298 128203 383929
365173 289201 287392
我需要从每个文件中选择最后一行并将其放在另一个CSV中:
files value1 value2 value3
file1 365173 289201 287392
file2 362829 273829 372910
任何帮助将真的很感激!
答案
使用os
模块获取文件名列表,然后将一个初始标题行写入out .csv
,然后对于目录中的每个文件,将该文件的最后一行连接到该文件的名称上,并使用制表符作为分隔器。
import os
dir_name = 'the_directory'
with open('the_csv.csv', 'w') as out_handler:
out_handler.write('\t'.join(['files', 'value1', 'value2', 'value3'])+'\n')
for file in os.listdir(dir_name):
with open(os.path.join(dir_name, file)) as in_handler:
out_handler.write(file[:file.index('.')] + '\t' + in_handler.readlines()[-1])
并进行全面测试:
$ more the_directory/*
::::::::::::::
the_directory/a.csv
::::::::::::::
value1 value2 value3
377298 128203 383929
365173 289201 287392
::::::::::::::
the_directory/b.csv
::::::::::::::
value1 value2 value3
377298 128203 383929
365987 289123 287456
$ python -q
>>> import os
>>> dir_name = 'the_directory'
>>> with open('the_csv.csv', 'w') as out_handler:
... out_handler.write('\t'.join(['files', 'value1', 'value2', 'value3'])+'\n')
... for file in os.listdir(dir_name):
... with open(os.path.join(dir_name, file)) as in_handler:
... out_handler.write(file + '\t' + in_handler.readlines()[-1])
...
27
29
29
>>>
$ cat the_csv.csv
files value1 value2 value3
b.csv 365987 289123 287456
a.csv 365173 289201 287392
另一答案
使用glob.iglob
查找文件,使用pd.read_csv
读取每个文件。
例如,
import glob
import pandas as pd
list_last_values=[]
for csv in glob.iglob('Path\\*.csv'):
data=pd.read_csv(csv)
list_last_values.append(pd.DataFrame(data.loc[len(data)-1,:]).T)
df_last_values=pd.concat(list_last_values)`
以上是关于从CSV文件中提取最后一行,并将其放在另一个文件名为Python的文件中的主要内容,如果未能解决你的问题,请参考以下文章
如何获取 ADLS Gen2 文件的最后修改日期并将其保存到 python 中的 csv
使用 JMeter,如何从 API 的响应正文中提取字符串并将其保存到 csv 文件?
c_cpp 从一个文件中搜索palindroms并将其按字母顺序放在另一个文件中