【发布时间】:2022-02-09 21:38:32
【问题描述】:
我从服务器收到提取的数据,问题是提取有分隔符“;”在 csv 文件中。
我使用以下命令读取文件夹:
files = glob.glob(r"path/*.csv")
dfs = [pd.read_csv(f, sep=";", engine='c') for f in files]
df2 = pd.concat(dfs,ignore_index=True)
输出是:
columnA columnB .... columnT columnU
2000 A .... I wish NaN
1000 B .... that NaN
this ends NaN .... NaN NaN
3000 A ..... I DUU
...
第 3 行的文本属于第 2 行的 columnT。到目前为止,我只能删除所有奇怪的行,如第 4 行,但我无法保留该信息。
df2.dropna(subset=['columnB'], how='all', inplace=True)
如何正确读取文件?问题是,在文本中的文本字段 columnT 中,它也使用“;”作为普通角色。
原文为(csv):
columnA; columnB; .... columnT; columnU:
2000; A; .... I wish; NaN;
1000; B; .... that; this ends; NaN;
3000; A; ..... I; DUU;
【问题讨论】:
-
我想说这很困难,对于任何进程,如果分隔符故意设置为
;,那么;的文本版本中的.csv将始终可见作为新的列指标。您很可能需要在转换前清理文件。您是否可以从服务器访问转换/提取过程?看看你能不能得到带有不同分隔符的.csv。 -
您能否将您的 csv 文件的摘录显示为 纯文本(如果需要,可以使用假数据),其中至少包含标题行和包含有问题数据的行之一.没有它,我无法猜测这是否只是一个配置问题,或者文件是否已不可挽回地损坏,或者是否存在可能的解决方法。请不要显示电子表格中发生的情况,而是显示在记事本、vi 或任何其他文本编辑器中发生的原始内容。
-
我将其添加为小摘录
-
不,你没有。您的代码使用
sep=';'读取 csv,而您显示为 csv 的内容不包含任何;。我要求您提供原始内容不是为了打扰您,而是因为为了能够帮助您,我需要确切了解文件中的分隔符和引号是如何使用的。 -
知道了,我现在添加了它