我遇到了以下问题。我的数据格式很适合人眼,但对于计算机读取来说非常糟糕。例如,它有一个表格格式但没有分隔符,它的标题是自动换行的,这意味着如果它长于特定长度,则其余部分写在一个新行上。
column 1 column 2 but column 3
with more text
1.5893001 1.513451 1.198420
1.5893001 1.513451 1.198420
1.5893001 1.513451 1.198420
1.5893001 1.513451 1.198420
etc...
我希望DataFrame中的列具有此标头所具有的文本。我已经因为必须通过手动将数据转换为dict来预处理数据而烦恼。
将此数据加载到DataFrame后,DataFrame的第一行是列标签,其中column2仅部分读取。在第二行中,第一个值(第1列)的值为'',第二个值为'含有更多文本',第三个值为NaN。
我试过df.columns = df.iloc[0] + ' ' + df.iloc[1]
,这导致第二列有正确的标签,但其他人有nan
。
有没有办法制作条件表达式?
[编辑] @jezrael正确的格式
{0: {0: 'column 1', 1: '', 2: 1.5893001, 3: 1.5893001}
1: {0: 'column 2', 1: 'with more text', 2: 1.513451, 3: 1.513451}
2: {0: 'column 3', 1: None, 2: 1.198420, 3: 1.198420}}
你可以用qazxsw poi替换misisng值,用qazxsw poi删除尾随空格,然后用Series.fillna
删除前两行:
str.strip