如何按数据框分组以获取重复值作为列的列表
How can I group-by a Dataframe to get repeated values as a list for a column
查询数据库后,我得到了这样的数据框:
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0
可以看出,Animal 列有重复值,我想对该列进行分组并得到结果(结果是否为 diff 数据类型无关紧要,例如 dict):
Animal Max Speed
0 Falcon 380.0, 370.0
1 Parrot 24.0, 26.0
到目前为止,我看到的所有 df.groupby(['column_name'])
示例都有另一个操作(例如 sum(), count()
),但我需要的是只有一个条目以及所有值。
是否有任何操作可用于执行此更改?
提前致谢。
d = {"Animal": ["Falcon", "Falcon", "Parrot", "Parrot"], "Speed": [123, 235.2, 323, 223.3]}
df = pd.DataFrame(d)
df["Speed"] = df.Speed.apply(lambda x: str(x))
df['CT_Speed'] = df.groupby(['Animal'])['Speed'].transform(lambda x : ', '.join(x))
df.drop("Speed", axis=1, inplace = True)
df = df.drop_duplicates()
df
聚合到 pd.Series
的示例,每个单元格包含 list
个值:
data = {"Animal": ["Falcon", "Falcon", "Parrot", "Parrot"], "Speed": [380.0, 370.0, 24.0, 26.0]}
df = pd.DataFrame(data)
serie = df.groupby(["Animal"])["Speed"].agg(lambda x : x.tolist())
serie
它应该输出:
Animal
Falcon [380.0, 370.0]
Parrot [24.0, 26.0]
Name: Speed, dtype: object
查询数据库后,我得到了这样的数据框:
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0
可以看出,Animal 列有重复值,我想对该列进行分组并得到结果(结果是否为 diff 数据类型无关紧要,例如 dict):
Animal Max Speed
0 Falcon 380.0, 370.0
1 Parrot 24.0, 26.0
到目前为止,我看到的所有 df.groupby(['column_name'])
示例都有另一个操作(例如 sum(), count()
),但我需要的是只有一个条目以及所有值。
是否有任何操作可用于执行此更改?
提前致谢。
d = {"Animal": ["Falcon", "Falcon", "Parrot", "Parrot"], "Speed": [123, 235.2, 323, 223.3]}
df = pd.DataFrame(d)
df["Speed"] = df.Speed.apply(lambda x: str(x))
df['CT_Speed'] = df.groupby(['Animal'])['Speed'].transform(lambda x : ', '.join(x))
df.drop("Speed", axis=1, inplace = True)
df = df.drop_duplicates()
df
聚合到 pd.Series
的示例,每个单元格包含 list
个值:
data = {"Animal": ["Falcon", "Falcon", "Parrot", "Parrot"], "Speed": [380.0, 370.0, 24.0, 26.0]}
df = pd.DataFrame(data)
serie = df.groupby(["Animal"])["Speed"].agg(lambda x : x.tolist())
serie
它应该输出:
Animal
Falcon [380.0, 370.0]
Parrot [24.0, 26.0]
Name: Speed, dtype: object