【发布时间】:2015-07-26 13:18:23
【问题描述】:
我收到很多类似这样的数据:
Even_
Long_var_ longer_var
Obs Var1 name name ...
=================================================
1 xxx 23 lolz ...
2 yyy 34 foo ...
3 zzz 96 bar ...
以 SAS 的 .out 文件的形式。
如果这些是简单的制表符分隔文件,则没有问题,但 SAS 会进行某种神奇的漂亮打印,它会换行变量名称以保持列对齐并每 60 或 70 行重复标题或所以。因为变量具有不同的长度(如示例中所示),有时这会导致两行变量名称,有时是三行,我可以想象分成四行。
假设一下,我无法说服以这种方式传递数据的程序员转储一个漂亮干净的 csv 或其他东西。
挑战有 3 个:
- 拆分变量名
- 换行
- 删除重复的标题
我想我可以用一个大而愚蠢的多行正则表达式处理三个,但我不知道如何处理 1 和 2(不是 pandas.read_fwf,至少在没有足够的预处理的情况下我无论如何,到那时已经解决了 1 和 2)。
pydata 世界中是否已经有一个库可以做到这一点?如果没有,有什么建议吗?
【问题讨论】:
-
这并不难,但可能很乏味且耗时。你最好的时间投资可能花在说服(乞求?)程序员输出更方便的东西上。它最终也更加准确。我怀疑是否有一个库(尽管可能有)b/c 这是 CSV、sas 数据集、hd5 等的重点。
-
谢谢@JohnE,我同意。我想我将研究一种解决最简单情况(无包装)的方法,并将其作为其他人的起点,但昨天的一些工作证实了单调乏味。在这一点上绝对是“乞求”而不是说服。
标签: python pandas text-processing