【问题标题】:Create new column which is the aggregation of a few other columns who meet certain condition创建新列,它是满足特定条件的其他一些列的聚合
【发布时间】:2020-04-03 15:53:54
【问题描述】:

我有一个 pandas 数据框(人口),我想向其中添加一个新列。新列应该是 - 当然对于每个索引/行 - 所有(且仅)名称中包含子字符串“ussr”的列的总和。 有办法吗?

【问题讨论】:

    标签: python pandas dataframe data-manipulation


    【解决方案1】:

    您可以生成此列运行:

    df['MySum'] = df[df.columns[df.columns.str.contains('ussr', case=False)]].sum(axis=1)
    

    详情:

    • df.columns.str.contains('ussr', ...) - 创建一个 boolean 列表 - 特定列是否包含 ussr 字符串。
    • case=False - 不区分大小写(如果需要)。
    • df.columns[...] - 创建一个包含此字符串的列表。
    • df[...] - 检索这些列的内容。
    • sum(axis=1) - 为每一行生成这些列的总和。
    • df['MySum'] = ... - 将结果保存在给定列下。

    您可以将目标列名称更改为您想要的任何名称,但要避免 将 ussr 置于其名称中。否则,当您运行上述指令时 同样,它的值也将被视为源元素之一。

    【讨论】:

    • 感谢您提供帮助和教育性的答案!
    猜你喜欢
    • 2011-11-16
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多