根据现有列的分类值将列添加到数据框中

时间:2018-06-03 19:55:23

标签: python pandas dataframe

我有一个数据框,其中包含一个包含变量名称的列,以及一个包含此变量值的列。此表中的一些示例行可能是:

    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上发布了类似的问题,但是我找不到这个问题的正确措辞。希望任何人都可以提供帮助。

1 个答案:

答案 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