根据名称组合行并根据原始 pandas 数据框的外观标记其组

Combine rows base on name and tag their group base on appearance from original pandas dataframe

如何转换这个数据框...

name        | group
James       | 1
Mike        | 2
Tod         | 1
Rico        | 2
Billie      | 3
Mike        | 3
Tod         | 2

为此:

name        | in_group_1 | in_group_2 | in_group_3
James       | True       | False      | True
Mike        | False      | True       | True
Tod         | True       | True       | False
Rico        | False      | True       | False
Billie      | False      | False      | True

在第一个数据框中,它是所有人与每个组的组合。在第二个数据框中,我们合并具有相同名称的行,并根据第一个数据框中的组将它们的组标记为 True。我们也会在之后删除组列。

您可以使用 pd.crosstab 和链接 astype(bool)10 转换为 True/False:

>>> pd.crosstab(df.name, df.group).astype(bool).add_prefix('in_group_').reset_index()

group    name  in_group_1  in_group_2  in_group_3
0      Billie       False       False        True
1       James        True       False       False
2        Mike       False        True        True
3        Rico       False        True       False
4         Tod        True        True       False

注意:

>>> pd.crosstab(df.name, df.group).add_prefix('in_group_').reset_index()

group    name  in_group_1  in_group_2  in_group_3
0      Billie           0           0           1
1       James           1           0           0
2        Mike           0           1           1
3        Rico           0           1           0
4         Tod           1           1           0