我有一个数据框,其中包含一个包含变量名称的列,以及一个包含此变量值的列。此表中的一些示例行可能是:
id variable value date
0 AS14.01 mood 6.000 2014-02-26
1 AS14.01 acti 0.091 2014-03-20
2 AS14.01 pers 0.101 2014-04-21
我想将其转换为数据框,其中变量列中的每个唯一值形成一个包含相应行的值的新列。对于特定ID,每个日期应该只有1行。 上面给出的数据帧的示例行将是:
id date mood acti pers
0 AS14.01 2014-02-26 6.000 NaN NaN
1 AS14.01 2014-03-20 NaN 0.091 NaN
2 AS14.01 2014-04-21 NaN NaN 0.101
可能之前在stackoverflow上发布了类似的问题,但是我找不到这个问题的正确措辞。希望任何人都可以提供帮助。
答案 0 :(得分:1)
这是get_dummies
的一种方式。您也可以尝试使用旋转。这不会自动删除原始variable
列。
df = df.join(pd.get_dummies(df.variable).replace(0, np.nan).mul(df.value, axis=0))
# id variable value date acti mood pers
# 0 AS14.01 mood 6.000 2014-02-26 NaN 6.0 NaN
# 1 AS14.01 acti 0.091 2014-03-20 0.091 NaN NaN
# 2 AS14.01 pers 0.101 2014-04-21 NaN NaN 0.101