宽到长格式的熊猫

时间:2020-12-29 09:52:47

标签: python-3.x pandas

期望的输出 -

<头>
id 性别 random_genre
1 F 小说
1 F 历史
2 M 谜团
3 F 小说
4 M 历史

我有一个数据框,用户可以在其中拥有多个首选项,我必须将这些首选项与其他类型的首选项结合起来,这会使表格呈指数级增长。像 x、y 等,一种偏好高达 80+,另一种偏好接近 40。

到目前为止,我一直在旋转表格 (pivot_table) 并执行合并,但我想将输出用于图表(偏好计数等)。

pivot_table 后的当前输出 -

<头>
id 性别 小说 历史 谜团
1 F 1 NaN NaN
1 F NaN 2 NaN
2 M NaN NaN 3
3 F 1 NaN NaN
4 M NaN 2 NaN

加入后有近 80 多种偏好,其中一种类型甚至更多。

如何在连接到第一个表后将所有这些转换回第一个表,其中我只有 所有首选项只有一列,如果一个 id 有多个首选项,则为同一列创建新行 ?

2 个答案:

答案 0 :(得分:1)

枢轴后,如下熔化

 df.melt(id_vars=['id','gender'], value_vars=['fiction','history','mystery']).dropna()



     id gender variable  value
0    1      F  fiction    1.0
3    3      F  fiction    1.0
6    1      F  history    2.0
9    4      M  history    2.0
12   2      M  mystery    3.0

答案 1 :(得分:0)

看看 pandas.melt 函数。它可能对你有用