繁体   English   中英

在csv文件中搜索特定的标头

[英]Searching for specific headers in csv file

我想在python中读取一个csv文件并获取所有标头,然后搜索不同的csv文件以检查它们是否具有第一个csv文件没有的其他标头。

我目前有一个合并csv文件的程序,但是我需要处理其中一个文件是否具有额外(或多个额外)标头的问题。

import glob, os
import pandas as pd

file_list = glob.glob("*.csv")
pd_list = []

for file in file_list:
    pd_list.append(pd.read_csv(file))

combined = pd.concat(pd_list)
final = combined.drop_duplicates()

if not os.path.exists('output'):
    os.makedirs('output')

final.to_csv("output/final.csv", index=False)

如果用“标题”来表示字符串列表,那么我相信您可以使用集合:

A = set(['red', 'blue', 'green', 'white'])
B = set(['red', 'blue', 'green', 'white', 'purple'])

if A.issubset(B):
    if B.difference(A):
        print('B has extra headers')
    else:
        print('B does not have extra headers')
else:
    print('B is missing headers')

“ B有多余的标题”

使用pandas可以用更少的代码完成同样的事情:

数据:

csv1:

CustomerID,Gender,Day,SaleAmount
18,Male,Monday,71.55
24,Female,Monday,219.66
112,Male,Friday,150.44

CSV2:

CustomerID,Gender,Day,SaleAmount
18,Male,Monday,71.55
24,Female,Monday,219.66
112,Male,Friday,150.44

csv3-注意2个额外的列,其中1也是重复的列:

CustomerID,Gender,SaleAmount,Day,random,Day
18,Male,71.55,Monday,test1,Monday
24,Female,219.66,Monday,test2,Wednesday
112,Male,150.44,Friday,test3,Friday

使用pathlib而不是osglob

码:

from pathlib import Path

p = Path.cwd() / 'csv_files'
f = p.rglob('*.csv')

df = pd.concat([pd.read_csv(x) for x in f], sort=False)

df.reset_index(inplace=True, drop=True)
df.to_csv('test.csv', index=False)

在此处输入图片说明

  • 添加多余的列并用不存在的NaN填充
  • 重复的DayDay.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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