将一些观察值转换为变量

数据挖掘 数据清理
2022-02-21 15:22:42

我有一个格式如下表的表格:

Feature amount  ID  Location
Feat1      2    1   US
Feat2      0    1   US
Feat3      0    1   US
Feat4      1    1   US
Feat2      2    2   US
Feat4      0    2   US
Feat3      0    2   US
Feat6      1    2   US

假设我有 200 个不同的 ID。我想将所有不同的特征转换为变量并将数量转换为观察值,因此我将具有相同 ID 的行合并为一行。例如,

Feat1 Feat2 Feat3 Feat4 Feat5 Feat6 ID Location
  2     0     0     1    NA    NA   1    US
 NA     2     0     0    NA    1    2    US

在 Python(熊猫)或 R 中有没有好的方法呢?

提前致谢!

1个回答

假设您的表可以放入具有 4 列的 pandas DataFrame 对象数据,如上。实现您想要的一种方法是使用 ID 和位置进行 GROUPBY。然后逐渐为新表的每一行赋值:

    newdata = pd.DataFrame(columns=['ID', 'Location', 'Feat1', 'Feat2', 'Feat3', 'Feat4', 'Feat5', 'Feat6'])
    grouped = data.groupby(['ID', 'Location'])

    for index, (group_name, d) in enumerate(grouped):
        newdata.loc[index, 'ID'] = group_name[0]
        newdata.loc[index, 'Location'] = group_name[1]
        for feature, amount in zip(d['Feature'], d['amount']):
            newdata.loc[index, feature] = amount