![](/img/trans.png)
[英]Calculate columns from multiple CSV files and save results into a new file
[英]Python code: Extract single columns from multiple csv files to save as a new csv file while column_header == source_csv_files
我想从多个 (100s) CSV 文件中读出特定列,以创建一个新的 CSV 文件。 header 列将使用提取该列的源文件名重命名。 我已经编写了一些代码行来执行此操作,但是,我无法在没有扩展名的情况下有效地重命名列 header(见附件)。 我会很感激一些帮助。 非常感谢。
import os
import csv
import pandas as pd
folder = "C:/Users/Doc/Data"
files = os.scandir(folder)
E2080 = []
with os.scandir(folder) as files:
for file in files:
#print(file)
df = pd.read_csv(file, index_col=None)
dist = {file: (df['lnt_dist'])}
E = pd.DataFrame(dist)
E2080.append(E)
dist = pd.concat(E2080, ignore_index=False, axis=1)
dist.head()
dist.to_csv('E2080', index=False)
您应该使用file.name
而不是file
来获取带有名称的string
。
使用string
,您可以使用.split(".")
获取不带扩展名的名称。
for file in os.scandir(folder):
print(file.name, '=>', file.name.split(".")[0])
或者您可以使用pathlib.Path
而不是os.scandir()
来获得更多功能。
for file in pathlib.Path('test').iterdir():
print(file.name, '=>', file.stem)
这是对我有用的最终代码(参见 output 1 ):
E2080 = []
with os.scandir(folder) as files:
for file in files:
#print(file)
df = pd.read_csv(file, index_col=None)
dist = {file: (df['lnt_dist'])}
E = pd.DataFrame(dist)
E_1 = E.rename(columns={file: file.name.split('.')[0]}) # rename df header while dropping the ext **[.csv]** and the `os.scandir` attribute `<DirEntry>`
E2080.append(E_1)
dist = pd.concat(E_28, ignore_index=False, axis=1)
#dist.head()
dist.to_csv('E2080.csv', index=False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.