期望的输出 -
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 有多个首选项,则为同一列创建新行 ?
答案 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
函数。它可能对你有用