在熊猫中的str数据框中找到多列的平均值

时间:2018-08-26 05:18:08

标签: python pandas

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

输入数据框:

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

2 个答案:

答案 0 :(得分:0)

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

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)

答案 1 :(得分:0)

如果不知道列(但由于需要输出,我跳过了第一列):

df = pd.DataFrame(di).fillna(pd.np.nan)
df['average']=df.apply(lambda row: pd.to_numeric(pd.Series(row.tolist()[2:]),errors='coerce').mean(),axis=1)
print(df)

输出:

  col1 col2 col3 col4 col5   average
0  abc  123    1    4    9  4.666667
1  def  NaN    2    7  NaN  4.500000
2  ghi  456    5  NaN    3  4.000000
3  jkl  789  NaN    8    8  8.000000
相关问题