我有一个具有NaN值的 Dataframe (data_train),下面给出了一个示例:
republican n y
republican n NaN
democrat NaN n
democrat n y
我想用一些随机值替换所有的NaN。
republican n y
republican n rnd2
democrat rnd1 n
democrat n y
我该怎么做。
我尝试了以下方法,但没有成功:
df_rand = pd.DataFrame(np.random.randn(data_train.shape[0],data_train.shape[1]))
data_train[pd.isnull(data_train)] = dfrand[pd.isnull(data_train)]
当我用随机数字数据的dataframe执行上述操作时,上述脚本工作正常。
9条答案
按热度按时间tjrkku2a1#
您可以使用#波浪号运算符随机填充值
nxowjjhe2#
在循环中使用fillna()并将'limit'属性设置为1可以帮助用不同的随机值替换nan。
yqlxgs2m3#
试试我的代码。我将前面的答案结合到工作示例中:
它比使用
apply_map
更快。ctrmrzij4#
如果随机,你实际上意味着/需要唯一的值,那么这个快速解决方案可以与各种进一步的快速修改一起工作:
mbzjlibv5#
只需这样使用
fillna
rekjcdws6#
如果你想用列表中的随机值替换DF中的所有NaN,你可以这样做:
pxyaymoc7#
好吧,如果你用
fillna
来填充NaN
,一个随机生成器只工作一次,并且会用相同的数字填充所有的N/A。因此,请确保每次生成并使用一个随机数。对于这样的dataframe:
我使用下面的代码来填充A列中的
NaNs
:这将给予我们这样的东西:
ep6jt1vc8#
您可以使用pandas update命令,如下所示:
1)生成一个随机DataFrame,其列和索引与原始数据相同:
2)然后使用
update
,以便df
中的NaN值将被生成的随机值替换在上面的例子中,我使用了标准法线的值,但你也可以使用从原始DataFrame中随机选取的值:
zyfwsgd69#
如果你想用热甲板技术取代你的专栏中的NaN,我可以提出这样的方法:
如果你喜欢在每次迭代中用一个新的随机值替换NaN,你可以做这样的事情。你只需要确定随机选择的最大值。