gpt4 book ai didi

python - 计算目录中多个csv文件的列数

转载 作者:行者123 更新时间:2023-12-01 09:06:21 28 4
gpt4 key购买 nike

我有一个目录,其中包含大量 CSV 文件(超过 1000 个)。我正在使用 python pandas 库来计算每个 CSV 文件中的列数。

但问题是,有些CSV文件中使用的分隔符不仅是"," but "|" and ";"

如何解决这个问题:

import pandas as pd
import csv
import os
from collections import OrderedDict

path="C:\\Users\\Username\\Documents\\Sample_Data_August10\\outbound"

files=os.listdir(path)

col_count_dict=OrderedDict()
for file in files:
df=pd.read_csv(os.path.join(path,file),error_bad_lines=False,sep=",|;|\|",engine='python')

col_count_dict[file]=len(df.columns)

我将它存储为字典。

我收到如下错误:

Error could possibly be due to quotes being ignored when a multi-char delimiter is used

我用过sep=None ,但这没有用。

编辑:
其中一个 csv 是这样的: Number|CommentText|CreationDate|Detail|EventDate|ProfileLocale_ISO|Event_Number|Message_Number|ProfileInformation_Number|Substitute_UserNo|User_UserNo

第二个就像: Number,Description

我不能透露数据。由于数据敏感,我刚刚给出了列名称。

更新

经过一些调整并使用打印状态来确定使用 andrey-portnoy 的代码,我开始知道 csv 嗅探器正在识别“|”的分隔符作为“e”,所以使用 if 语句我将其改回“|”。现在它给了我正确的输出。
也代替 read() ,我用了readline() 。在安德烈的回答中的以下代码行中:dialect = csv.Sniffer().sniff(csvfile.read(1024))
但问题仍然没有解决。经过大量检查后我能够弄清楚这一点,但每次我的猜测可能都不正确,这可能会导致错误。
将等待任何帮助。

最佳答案

通过将分隔符指定为 sep=",|;|\|",您可以使整个字符串成为分隔符。

相反,您想使用 Sniffercsv 模块检测每个文件中使用的 CSV 方言,特别是分隔符。

例如,对于单个文件 example.csv:

import csv
with open('example.csv', newline='') as csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
sep = dialect.delimiter

df = pd.read_csv('example.csv', sep=sep)

不要默认启用 Python 引擎,因为它的速度要慢得多。

关于python - 计算目录中多个csv文件的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014473/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com