三千列并不多。你有几排?您总是可以随机生成一个相同大小的数据帧并进行逻辑替换(数据帧的大小将决定这是否可行)。在
如果您知道数据帧的大小:import pandas as pd
import numpy as np
# create random dummy dataframe
dfrand = pd.DataFrame(data=np.random.randn(rows,cols))
# import "real" dataframe
data = pd.read_csv(etc.) # or however you choose to read it in
# replace nans
data[np.isnan(data)] = dfrand[np.isnan(data)]
如果你不知道你的数据帧的大小,那就把事情弄得乱七八糟
^{pr2}$
编辑
根据“用户”最后的评论:
“德兰德[np.伊斯南(data)]只返回NaN。”
对!这正是你想要的。在我的解决方案中,我有:数据[np.伊斯南(数据)]=dfrand[np.伊斯南(数据)]。翻译过来,这意味着:从dfrand中随机生成的值对应于“data”中的NaN位置,并将其插入“data”,其中“data”是NaN。一个例子将有助于:a = pd.DataFrame(data=np.random.randint(0,100,(10,3)))
a[0][5] = np.nan
In [32]: a
Out[33]:
0 1 2
0 2 26 28