【发布时间】:2021-01-31 05:10:15
【问题描述】:
我希望将表格数据转换为 CSV,但是当表格中包含某些缺失值的行时,我遇到了障碍。输入如下表,
systemd 1 root cwd DIR 8|1 4096 2 /
systemd 1 root rtd DIR 8|1 4096 2 /
systemd 1 root txt REG 8|1 1612152 101375 /lib/systemd/systemd
systemd 1 root mem REG 8|1 1700792 26009 /lib/x86_64-linux-gnu/libm-2.27.so
systemd 1 root mem REG 8|1 121016 1715 /lib/x86_64-linux-gnu/libudev.so.1.6.9
node 697 698 user1 cwd DIR 8|33 4096 7995393 /home/user1
node 697 698 user2 rtd DIR 8|1 4096 2 /
node 697 698 user1 txt REG 8|33 43680144 8003081 /home/user1/.vscode-server/bin/26076a4de974ead31f97692a0d32f90d735645c0/node
node 697 698 user1 mem REG 8|1 101168 26021 /lib/x86_64-linux-gnu/libresolv-2.27.so
node 697 698 user1 mem REG 8|1 26936 26014 /lib/x86_64-linux-gnu/libnss_dns-2.27.so
我想将其转换为保留列数的 CSV,输出应如下所示,
systemd,1,,root,cwd,DIR,8|1,4096,2,/
systemd,1,,root,rtd,DIR,8|1,4096,2,/
systemd,1,,root,txt,REG,8|1,1612152,101375,/lib/systemd/systemd
systemd,1,,root,mem,REG,8|1,1700792,26009,/lib/x86_64-linux-gnu/libm-2.27.so
systemd,1,,root,mem,REG,8|1,121016,1715,/lib/x86_64-linux-gnu/libudev.so.1.6.9
node,697,698,user1,cwd,DIR,8|33,4096,7995393,/home/user1
node,697,698,user2,rtd,DIR,8|1,4096,2,/
node,697,698,user1,txt,REG,8|33,43680144,8003081,/home/user1/.vscode-server/bin/26076a4de974ead31f97692a0d32f90d735645c0/node
node,697,698,user1,mem,REG,8|1,101168,26021,/lib/x86_64-linux-gnu/libresolv-2.27.so
node,697,698,user1,mem,REG ,8|1,26936,2601,/lib/x86_64-linux-gnu/libnss_dns-2.27.so
到目前为止,我已经尝试使用 pandas read_fwf 函数,然后将其转换为 CSV,但它没有评估缺失的列值。因此,我没有为 CSV 中的每一行获取 10 个值,而是仅获取可见的 9。使用 pandas read_table 函数时也会发生同样的事情。我也尝试过使用正则表达式模式,但我不希望表格格式每次都相同,升级代码以合并更多表格成为一个问题
高度赞赏任何解决此问题的方法。非常感谢!
【问题讨论】:
-
您是否尝试将
""替换为"NaN"或np.nan或任何文本? -
当表格有列标题时不会出现此问题,当输入表格没有列标题时会导致此问题。
-
@woblob 并非如此,这会用提供的文本替换每个空格,在某些情况下,单列中的值也可以有空格(例如描述列)
-
如果没有标题,您尝试
pd.read_table(filename, header=None)或header=0吗? -
@woblob 我刚刚做了,添加了
header=None部分,它像以前一样跳过了缺失值
标签: python pandas csv tabular converters