【问题标题】:CSV with additional whitespace带有额外空格的 CSV
【发布时间】:2020-03-25 21:58:44
【问题描述】:

如何在正确的位置读取带有11122324 的文件?

例如,数字1112 应分别位于x3x4 变量中。

MWE 如下所示(obs.: csv 格式)。

x1;x2;x3;x4;
1;2;3;4;
5;6;7;8;
9;10;;11;12
13;14;15;16;
17;18;19;20;
21;22;;23;24

编辑 - 实例说明

Dataset snapshot

【问题讨论】:

  • 我认为您需要定义您认为的“正确位置”。此外,您似乎错过了 MWE 中的代码
  • 例如,数字1112应该分别在x3x4变量中。
  • 这能回答你的问题吗? Smarter Removing Unnecessary WhiteSpace CSV
  • @man0s 此解决方案用于字符串中的空格。

标签: python pandas csv


【解决方案1】:

假设你的“正确”位置是 x4 列。您可以为 sep 传入一个正则表达式,它将在一次或多次出现 ';' 时拆分数据:

data = '''x1;x2;x3;x4;
          1;2;3;4;
          5;6;7;8;
          9;10;;11;12
          13;14;15;16;
          17;18;19;20;
          21;22;;23;24'''

pd.read_csv(StringIO(data),sep='[;]+',engine='python').iloc[:,:-1]

    x1  x2  x3  x4
0   1   2   3   4
1   5   6   7   8
2   9   10  11  12
3   13  14  15  16
4   17  18  19  20
5   21  22  23  24

【讨论】:

  • 感谢您的回答。我的数据是 csv 文件,在这种情况下,不起作用。我需要直接从csv 文件中读取。
  • 您在实际读取数据时是否包含了 StringIO?只需在读取您自己的数据时删除 StringIO。
  • 我放了数据集的快照。
  • @WagnerSilva 我们需要查看原始数据以了解问题所在(在这种情况下,问题似乎在“AX”列中)。
【解决方案2】:

此 csv 文件有 5 列:x1、x2、x3、x4 和一列没有名称(在最后一个分号之后)。

11 和 12(以及 23 和 24)唯一正确的位置是在 x4 和第五列。

如果您想要 x3 和 x4 中的那些,则必须在 11 和 23 之前删除额外的 ;


您可能需要检查原始文件以查看字段内是否有分隔符。

【讨论】:

  • 这是一个最小工作示例 (MWE),在我的问题中有大量行和许多 csv。
  • 他们是否有同样的问题,或者你可能在字段内有一些分隔符?如果它们像您的示例,则应该修复(创建)csv 文件,而不是解析。
  • @WagnerSilva 你能提供一些真实数据(或这些文件中的一些问题行)来看看吗?
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多