在数据框列中填充字符串类型的NA时出错

时间:2018-12-26 01:06:41

标签: python pandas

我有一个pandas数据框列,其中有浮点值和字符串类型NA值。我需要使用以下代码将这些NA替换为均值。

trainTestJoin["col1"] = trainTestJoin.groupby("col2")["col1"].
     transform(lambda x: x.fillna(x.median()))

我得到了

TypeError: could not convert string to float: NA

我试图在填充之前将其转换为

trainTestJoin["LotFrontage"].astype(float)

但是它也有同样的问题。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

使用pd.to_numeric转换为数字,它通过errors='coerce'支持将浮点数NaN转换为不可转换的值:

df['col1'] = pd.to_numeric(df['col1'], errors='coerce')

然后直接使用groupby + transform

df['col1'] = df['col1'].fillna(df.groupby('col2')['col1'].transform('mean'))

答案 1 :(得分:0)

或者只是replace

trainTestJoin['col1'] = trainTestJoin['col1'].replace('NA',np.nan)

然后简单地:

trainTestJoin['col1'] = trainTestJoin['col1'].fillna(trainTestJoin.groupby('col2')['col1'].transform('mean'))

现在(毕竟):

print(trainTestJoin)

将会得到预期的输出。