Python 将两行合并为一行,并将其设置为";“列”;

Python 将两行合并为一行,并将其设置为";“列”;,python,pandas,dataframe,Python,Pandas,Dataframe,我遇到了以下问题。我的数据格式很适合人眼,但对计算机来说很难读取。例如,它有一个表格格式,但没有分隔符,并且它的标题是单词包装的,这意味着如果它的长度超过一个特定的长度,那么其余的就写在一个新行上 column 1 column 2 but column 3 with more text 1.5893001 1.513451 1.198420 1.5893001 1.513451

我遇到了以下问题。我的数据格式很适合人眼,但对计算机来说很难读取。例如,它有一个表格格式,但没有分隔符,并且它的标题是单词包装的,这意味着如果它的长度超过一个特定的长度,那么其余的就写在一个新行上

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...
我希望数据框中的列具有此标题所包含的文本。我已经对我必须通过手动将数据转换为dict来预处理数据的事实感到恼火

将此数据加载到数据框后,数据框的第一行是列标签,其中column2当然仅部分读取。在第二行中,第一个值(第1列)的值为“”,第二个值为“with more text”,第三个值为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}}

您可以将misisng值替换为adn remove traling spaces by,然后使用
iloc
删除前两行:

df.columns = (df.iloc[0] + ' ' + df.iloc[1].fillna('')).str.strip()
df = df.iloc[2:].reset_index(drop=True)
print (df)
  column 1 column 2 with more text column 3
0   1.5893                 1.51345  1.19842
1   1.5893                 1.51345  1.19842

什么是打印(df.head().to_dict())?最好还是上传一些数据样本文件到dropbox,gdocs,因为读取头与数据相关。。。很难通过复制来验证text@jezrael我已经编辑了我的帖子,并在dict()中添加了df.head()。如果添加参数
header=[0,1]
read\u csv
it working or error?@jezrael,我必须将此df写入tmp csv文件并重新读取到数据帧中。我会报告我的发现