在依赖于现有列的数据帧中添加列的通用公式

2024-05-29 00:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,如下所示

dataframe1=

   ID   D   F   G   Q
0   T1  1   3   4   5
1   T2  2   3   2   6
2   T3  4   7   7   8
3   T4  5   6   7   8

dataframe2=

    ID  Q   G   F   
0   T10 10  54  44  
1   T12 20  45  43  
2   T11 30  45  65  

我想通过以下方法添加一列

dataframe1['sum'] = dataframe1.D + dataframe1.F + dataframe1.G + dataframe1.Q

这将为dataframe1提供sum列,但是如果我对dataframe2应用相同的公式,它将抛出一个错误,因为dataframe2中没有列D

我想要一个通用公式,它将给出^ {CD1>},即使^ {< CD4>}不存在(在这种情况下,只需忽略^ {CD4>},并根据公式考虑其余的列并计算^ {CD1>})。

如何在单行代码中实现这一点


Tags: 数据id公式sumt1t3t2cd1
2条回答

所需列与dataframe列的交集将生成dataframe拥有的列

needed_columns = ['D', 'F', 'G', 'Q']

def has_columns(x): return list(set(x.columns) & set(needed_columns))

df1['sum'] = df1[has_columns(df1)].sum(axis=1)

   ID  D  F  G  Q  sum
0  T1  1  3  4  5   13
1  T2  2  3  2  6   13
2  T3  4  7  7  8   26
3  T4  5  6  7  8   26

另外,如果更改数据帧

df2['sum'] = df2[has_columns(df2)].sum(axis=1)

    ID   Q   G   F  sum
0  T10  10  54  44  108
1  T12  20  45  43  108
2  T11  30  45  65  140

df.sum将添加所有数值列,并忽略数据类型为object的列

df["sum"] = df.sum(axis=1)

相关问题 更多 >

    热门问题