Python 根据值重新定位列值

Python 根据值重新定位列值,python,pandas,Python,Pandas,我已将此示例表如下所示: |col_1|col_2|col_3| |---|---|---| |dog|cat|bike| |cat|bike|dog| |NaN|car|NaN| |col_1|col_2|col_3|col_4| |---|---|---| |dog|cat|bike|NaN| |dog|cat|bike|NaN| |NaN|NaN|NaN|car| 在pandas中,是否有任何方法可以重新排列每行的列值,以便所有相同的值都位于同一列中,如下所示: |col_1|

我已将此示例表如下所示:


|col_1|col_2|col_3|
|---|---|---|
|dog|cat|bike|
|cat|bike|dog|
|NaN|car|NaN|


|col_1|col_2|col_3|col_4|
|---|---|---|
|dog|cat|bike|NaN|
|dog|cat|bike|NaN|
|NaN|NaN|NaN|car|
在pandas中,是否有任何方法可以重新排列每行的列值,以便所有相同的值都位于同一列中,如下所示:


|col_1|col_2|col_3|
|---|---|---|
|dog|cat|bike|
|cat|bike|dog|
|NaN|car|NaN|


|col_1|col_2|col_3|col_4|
|---|---|---|
|dog|cat|bike|NaN|
|dog|cat|bike|NaN|
|NaN|NaN|NaN|car|
缺少的值应替换为NaN。 谢谢。

这更像是一个傻瓜问题


为什么不使用虚拟列呢?使用名为“dog”、“cat”、“bike”、“car”的列以及1和0表示该行是否具有该值似乎更为自然。这些列是在执行正则表达式搜索后生成的。是的,但那又怎样?这仍然是一种非常低效的存储方式。如果你有像狗自行车这样的东西,我们是否需要6个不同的列来表示自行车的多个实例?如果有一个名为“bike”的专栏,其中的数字是6,那就更自然了。谢谢后续问题:muls.columns在这里做什么?即使我不使用它们,也能得到正确的输出。如果我使用mul,我会得到以下错误类型error:ufunc'multiply'不包含签名类型匹配的循环dtype'@SamiraKumar mul在这里将1视为True,如果它将检查每一行如果为True,它将返回列的值,如果为False,它将返回emptyGot。谢谢: