繁体   English   中英

Python 代码:从多个 csv 文件中提取单个列以另存为新的 csv 文件,而 column_header == source_csv_files

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM