我有两个从我要加入的csv文件中读取的Pandas数据帧。两者都有一个我设置为索引的ID列。然后我根据索引加入它们。 不幸的是,当我这样做并且第二个df的索引不遵循第一个df的相同顺序时它失败了。 E.g:
>>> print df1
A B
ID
004583404.1_1 CYT NaN
005874764.1_2 CYT NaN
004583406.1_3 TMH NaN
005873538.1_36 SpII cleavage=18-19
005873971.1_57 SpII cleavage=18-19
>>> print df2
LipoBoxSimilarity OM/IM Cleavage site
Sequence name
005873971.1_57 High OM 19
005873538.1_36 High OM 19
>>> print df1.join(df2)
A B LipoBoxSimilarity OM/IM Cleavage site
ID
004583404.1_1 CYT NaN NaN NaN NaN
005874764.1_2 CYT NaN NaN NaN NaN
004583406.1_3 TMH NaN NaN NaN NaN
005873538.1_36 SpII cleavage=18-19 High OM 19
005873971.1_57 SpII cleavage=18-19 High OM 19
当我合并这两个df时,它仍然有效。然后,当我使用实际文件作为输入(只有更多行)时,它不再起作用。 两个df分别正确构建并且索引适当,列也合并,但不合并。所以我最终会遇到这种情况:
>>> print df1.join(df2)
A B LipoBoxSimilarity OM/IM Cleavage site
ID
004583404.1_1 CYT NaN NaN NaN NaN
005874764.1_2 CYT NaN NaN NaN NaN
004583406.1_3 TMH NaN NaN NaN NaN
005873538.1_36 SpII cleavage=18-19 NaN NaN NaN
005873971.1_57 SpII cleavage=18-19 NaN NaN NaN
原因可能是什么?我在与索引顺序相关的文档中找不到任何问题。可能是一个字母数字索引问题(例如WP_004583404.1_1)?我当然也试过基于列合并(所以没有将它们设置为索引),但它也不起作用。
答案 0 :(得分:0)
试试combine_first
。注意我已经在2个数据帧之间对齐了公共列名('ID')。
for (let data = [], i=0; i<1000; ++i) {
// Do something here that populates the data variable.
}
console.log(data); //Uncaught ReferenceError: data is not defined