我在熊猫中有以下数据框
C1 C2 C3
10 a b
10 a b
? c c
? ? b
10 a b
10 ? ?
我想在适用的情况下用平均值和众数代替?
我想要的数据框是
C1 C2 C3
10 a b
10 a b
10 c c
10 a b
10 a b
10 a b
我曾尝试在大熊猫中追随,但没有成功。
df[df['C1'] == '?'] = df[df['C1' != '?'].mean()
答案 0 :(得分:4)
您需要分别处理数字和非数字列
df.replace('?', np.nan, inplace = True)
df['C1'] = df['C1'].astype(float)
df['C1'] = df['C1'].astype(float).fillna(df['C1'].mean())
non_numeric = ['C2', 'C3']
df[non_numeric]=df[non_numeric].fillna(df.mode().iloc[0])
C1 C2 C3
0 10.0 a b
1 10.0 a b
2 10.0 c c
3 10.0 a b
4 10.0 a b
5 10.0 a b