【问题标题】:add/combine columns after searching in a DataFrame在 DataFrame 中搜索后添加/组合列
【发布时间】:2022-06-20 15:21:06
【问题描述】:

我正在尝试将数据从不同列复制到同一 DataFrame 中的特定列。

Index colA colB colC list CT CW CH

但在此之前,我想搜索 DataFrame 中是否存在这些列(colA、colB、colC),并将存在的列添加到相关列(CT、CH 等) 我做到了,

col_list1 = ['ColA','ColB','ColC'] 
test1 = any([ i in df.columns for i in col_list1 ])
if test1==True:
    df['CH'] = df['ColA'] +df['ColB'] 
    df['CT'] = df['ColC']

这段代码给我一个 keyerror . 我希望它忽略不存在的列并仅添加存在的列

【问题讨论】:

  • 如您所写,您的问题尚不清楚。您能否通过提供起始数据框的示例和您想要获得的示例来说明您想要什么。请务必说明您的所需列列表中不存在的列似乎存在的问题

标签: python pandas dataframe


【解决方案1】:

IIUC,您可以使用 Python setSeries.isin 查找常用列

cols = list(set(col_list1) & set(df.columns))
# or
cols = df.columns[df.columns.isin(col_list1)]
df['CH'] = df[cols].sum(axis=1)

【讨论】:

  • 如果 'col_list' 中的数据属于同一类型,则此方法工作正常。但我通常会混淆整数和字符串。这段代码没有抛出任何错误,但它不起作用!请帮助我
  • @Surya_Jas 你应该提供更多细节,因为我认为这不适用于不同的类型。
【解决方案2】:

不只是将列与+ 连接,而是将它们收集到一个列表中并将sumaxis=1 一起使用:

df['CH'] = np.sum([df[c] for c in cl if c in df], axis=1)

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 2013-06-17
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 2016-11-22
    • 2015-08-11
    相关资源
    最近更新 更多