首页 > 解决方案 > Pandas 将多列合并/合并为 1

问题描述

我想在 pandas 中将 2 列合并为 1,当我在谷歌上搜索时,我得到的唯一选项是:合并、连接、加入。这些都不能解决我在这里遇到的问题。

目标:

来自 base_dataframe:

Name Mark_x Mark_y Mark_z
A    90     nan    nan
B    nan    85     nan
C    nan    nan    70
D    30     nan    nan

到desired_dataframe:

Name Mark
A    90
B    85
C    70
D    30

我所拥有的是上面的数据框,并且只有 1 个 Mark 列永远不会为空(先决条件)。现在在谷歌搜索上停留了 1 个小时,不知道我应该研究什么功能来帮助解决这个问题。如果您知道任何可能与此问题相关的功能,请告诉我,以便我研究它,谢谢。

标签: python-3.xpandas

解决方案


假设在这三列中每行始终只有一个值,如您的示例所示,您可以使用df.sum(),默认情况下跳过任何NaN值:

desired_dataframe = pd.DataFrame(base_dataframe['Name'])
desired_dataframe['Mark'] = base_dataframe.iloc[:, 1:4].sum(axis=1)

在每行可能有更多值的情况下,使用 eg 可能会更安全df.max(),它以相同的方式工作。


推荐阅读