如何在熊猫中将多列合并为一列?
我有这张桌子:
ID | A | B | C | D
1 1 1 0 3
2 1 0 1 2
3 0 0 1 8
我想要这张桌子:
ID | X | D
1 A 3
1 B 3
2 A 2
2 C 2
3 C 8
我想根据它们的值将A,B,C列合并到X列中。如果一个ID具有多个合并列(A / B / C)的true(1)值,则将有该ID的新行副本。
您可以melt
用来重塑DataFrame,然后仅保留相关的列和行query
以选择行并drop
删除现在已过时的列,如下所示:
(df.melt(id_vars=['ID', 'D'], var_name='X')
.query('value == 1')
.drop(columns=['value']))
# ID D X
#0 1 3 A
#1 2 2 A
#3 1 3 B
#7 2 2 C
#8 3 8 C
融化后的DataFrame如下所示:
# ID D X value
#0 1 3 A 1
#1 2 2 A 1
#2 3 8 A 0
#3 1 3 B 1
#4 2 2 B 0
#5 3 8 B 0
#6 1 3 C 0
#7 2 2 C 1
#8 3 8 C 1
通过使用ID
和D
作为id_vars
,那些被复制的所有其他变量的每一个不同的值(A
,B
和C
)。这些列的值现在在该value
列中。然后,将行保留在value == 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句