如何在下面给定的数据框中找到列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
答案 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