【问题标题】:How To Merge Multiple Groupby Dataframes and Change Column Names--Getting NAs如何合并多个 Groupby 数据框并更改列名--获取 NA
【发布时间】:2020-06-11 22:37:03
【问题描述】:

只是为了提供一些上下文,我只是在学习 python 和编码。我们得到了泰坦尼克号的数据。我在网上搜索了答案,但找不到我要找的东西。所以这就是我现在问的原因。

我们需要按类别查找存活率。然后返回数据的输出。

我想创建一个数据框,其中类作为行名,“平均”和“计数”列表示每个类的平均存活率和存活个体的数量。

我知道我可以执行 groupby 函数并打印它——这确实给了我足够好的输出。我认识到这是一种可能性,并且最初确实产生了这种可能性。但我想要一个“表格”,就像显示输出一样,所有内容都很好地列在列中,行标记为类。

我知道我可以创建一个新的数据框并重新输入我最初输出中给出的数字。但我认为这不是很有效,也不能轻松扩展到更大的数据集。

所以这是我的初始代码

Survival_Class_Avg = pd.DataFrame(titanic.groupby(["pclass"])["survived"].mean())
Survival_Class_Count = pd.DataFrame(titanic.groupby(["pclass"])["survived"].count())

Surivval = pd.DataFrame(Survival_Class_Avg.copy().merge(Survival_Class_Count.copy(), how = "left", left_on = "pclass", right_on = "pclass"))

This is the table it produces

但我想添加 Average 和 Count 的列名(可能是乘客等级,取决于我是否使用“as_index = false”。但是当我这样做时,它会在我的列中得到 NaN。

Surivval = pd.DataFrame(Survival_Class_Avg.copy().merge(Survival_Class_Count.copy(), how = "left", left_on = "pclass", right_on = "pclass"), columns = ["Average", "Count"])

This is the table filled with NaNs

我也试过了:

Survival_Class_Avg = pd.DataFrame(titanic.groupby(["pclass"], as_index = False)["survived"].mean())
Survival_Class_Count = pd.DataFrame(titanic.groupby(["pclass"], as_index = False)["survived"].count())

Surivval = pd.DataFrame(Survival_Class_Avg.copy().merge(Survival_Class_Count.copy(), how = "left", left_on = "pclass", right_on = "pclass"), columns = ["Class","Average", "Count"])

这也没有太大变化。

【问题讨论】:

    标签: python pandas dataframe merge pandas-groupby


    【解决方案1】:

    在这种情况下您不需要加入,而是可以这样做:

    titanic.groupby(["pclass"])["survived"].agg(['mean', 'size'])
    

    【讨论】:

    • 这有帮助!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 2023-01-23
    • 2018-10-11
    • 2022-01-26
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多