gpt4 book ai didi

python - 过滤后在 Pandas 中添加每组出现的列和值

转载 作者:行者123 更新时间:2023-12-05 03:34:16 25 4
gpt4 key购买 nike

我有一个df

import seaborn as sns
import numpy as np
import pandas as pd

df = sns.load_dataset('titanic')

我正在尝试从 1-8 添加 8 列,这是乘客的年龄,并计算每个类别 1-8 中有多少乘客>

我试过:

df_temp = df.groupby('sex').agg({'fare':np.mean})

哪个返回:

        fare
sex
female 44.48
male 25.52

然后我有 age_buckets = range(1,9) 这是我感兴趣的年龄类别。

目标是拥有这种结构:

sex            fare                 age_1       age_2       age_3         ...     age_8
male 25 0 10 3 x
female 44 1 2 2 y

这意味着有 0 age_1 岁的男性和 1 个 1 岁的女孩,依此类推。

所以我尝试了以下方法:

df_age = df[df.age.isin(age_buckets)].groupby(['sex','age']) \
.count() \
.survived \
.reset_index()

它返回我想要的数据,但不是以我可以添加到我的主要 df_temp 中的格式作为每个年龄的列。

所以在这一点上,我不确定这是否是实现我想要创建的预期结果的正确方法,也不知道如何继续。

最佳答案

使用cutcrosstab并添加 DataFrame.add_prefix :

df = (df_temp.join(pd.crosstab(df['sex'],pd.cut(df['age'], 
bins=range(0,9),
labels=range(1,9)))
.add_prefix('age_')))
print (df)
fare age_1 age_2 age_3 age_4 age_5 age_6 age_7 age_8
sex
female 44.479818 4 6 2 5 4 2 1 2
male 25.523893 10 4 4 5 0 1 2 2

关于python - 过滤后在 Pandas 中添加每组出现的列和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70212172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com