pandas - 在 DataFrame 中逐行求和给定列

标签 pandas dataframe

我有一个 DataFrame 定义为:

df = pd.DataFrame({
    'id':[1,2,3], 
    'activity':['A1', 'A2', 'A2'], 
    'prep_hours':[None,None,1], 
    'delivery_hours':[10,10,15]})

我想创建一个列 total_hours,它是与模式 *_hours 匹配的所有列的总和

目前,我只是将我想要的列添加到一个新列中:

df.fillna(0, inplace=True)
df['total_hours'] = df['prep_hours'] + df['delivery_hours']

但它不容易扩展。举个例子,我只有 2 个名为 *_hours 的列,但在真正的 DataFrame 中,它包含 30 多个应该添加的列。

有没有更聪明的方法来做到这一点?

最佳答案

使用DataFrame.filter使用 like 参数和 sum,不需要将缺失值转换为 0:

df["total_hours"] = df.filter(like='_hours').sum(axis=1)
print (df)
   id activity  prep_hours  delivery_hours  total_hours
0   1       A1         NaN              10         10.0
1   2       A2         NaN              10         10.0
2   3       A2         1.0              15         16.0

关于pandas - 在 DataFrame 中逐行求和给定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60988731/

相关文章:

python - Pandas :尝试合并数据帧时获取 "TypeError: only integer scalar arrays can be converted to a scalar index"

python - 如何解决所有值都填None的问题?

python - Pandas 弄乱了 DataFrame.from_csv 上的日期列

python - 在 pandas DataFrame 中查找条件连续值

python - 使用python将数字转换为二进制并存储在 Pandas 的多列中

python - 将 (x, y) 坐标的元组对设置为 dict 作为带有 id 值的键

Python-连接两个相同的列并保持其他不变

python - 为什么 pandas 字符串系列为 len() 函数返回 NaN?

python - 如何在 python pandas 中转换时间列并查找具有条件的时间增量

python - 如何拆分具有多个数据的 Pandas 单元格