根据名称组合行并根据原始 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)
将 1
和 0
转换为 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
如何转换这个数据框...
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)
将 1
和 0
转换为 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