python - 在 Pandas 的 str 数据框中查找多列的平均值

标签 python pandas

如何在下面给定的数据框中找到列 col3、col4、col5 的平均值,并将其添加为名为“average”的新列,如使用 pandas 所需的输出数据框中所示。

输入数据框:

di = {'col1': ['abc', 'def', 'ghi', 'jkl'],
      'col2': ['123', None, '456', '789'],
      'col3': ['1', '2', '5',None], 
      'col4': ['4', '7', None, '8'], 
      'col5': ['9', None, '3', '8']}
df = pd.DataFrame(di, dtype=object)

   col1    col2   col3  col4  col5
0   abc     123      1     4     9
1   def    None      2     7  None
2   ghi     456      5  None     3
3   jkl     789   None     8     8

要求的输出:

    col1   col2   col3  col4  col5  average
0   abc     123      1     4     9     4.66
1   def    None      2     7  None     4.5
2   ghi     456      5  None     3     4
3   jkl     789   None     8     8     8

最佳答案

通过 iloc 按名称或位置选择列,转换为 float 因为 None 被转换为 NaN 最后得到 mean 每行 axis=1:

cols = ['col3','col4','col5']
df['average'] = df[cols].astype(float).mean(axis=1)
df['average'] = df.iloc[:, 2:].astype(float).mean(axis=1)

print (df)
  col1  col2  col3  col4  col5   average
0  abc   123     1     4     9  4.666667
1  def  None     2     7  None  4.500000
2  ghi   456     5  None     3  4.000000
3  jkl   789  None     8     8  8.000000

关于python - 在 Pandas 的 str 数据框中查找多列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023409/

相关文章:

python - 如何为通用工厂方法创建类型提示?

python - 嵌套循环或 'in' ,哪个更快?

python - if语句检查字符串是否有大写字母、小写字母和数字

python - 在python中为 Pandas 数据框获取时间索引

python - 封装矢量化函数 - 用于 Panda DataFrames

python - 将未堆叠的数据帧转换为 pandas 中的数据帧

python - 当 edgecolor = 'none' 时 Matplotlib 标记消失

python - 在 python 中将我自己的函数作为 asyncio 函数

python - 设置 pandas DataFrame 的索引名称

python - 重新索引堆叠的 DataFrame