如何使用python遍历目录并从所有CSV中删除特定列?

2024-04-26 06:46:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有几个CSV的目录

files = glob('C:/Users/jj/Desktop/Bulk_Wav/*.csv')

每个csv都有相同的以下列。下面是Reprex-

yes no maybe ofcourse
1   2  3     4

我希望我的脚本遍历文件夹中的所有CSV,并删除列,当然可能是这样


Tags: csvno目录filesbulkusersglobyes
3条回答

你是说:

files = glob('C:/Users/jj/Desktop/Bulk_Wav/*.csv')
for filename in files:
    df = pd.read_csv(filename)
    df = df.drop(['maybe ', 'ofcourse'], axis=1)
    df.to_csv(filename)

此代码将删除maybeofcourse列,并将其保存回csv

如果glob为您提供了文件路径,您可以使用pandas执行以下操作:

import pandas as pd

files = glob('C:/Users/jj/Desktop/Bulk_Wav/*.csv')
drop = ['maybe ', 'ofcourse']

for file in files:
    df = pd.read_csv(file)
    for col in drop:
        if col in df:
            df = df.drop(col, axis=1)
    df.to_csv(file)

或者,如果您想要一种更干净的方式不从drop获取KeyError,您可以这样做:

import pandas as pd

files = glob('C:/Users/jj/Desktop/Bulk_Wav/*.csv')
drop = ['maybe ', 'ofcourse']

for file in files:
    df = pd.read_csv(file)
    df = df.drop([c for c in drop if c in df], axis=1)
    df.to_csv(file)

您可以使用panda将csv文件读取到数据帧,然后使用drop()删除特定列。如下所示:

df = pd.read_csv(csv_filename)
df.drop(['maybe', 'ofcourse'], axis=1)

相关问题 更多 >