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