如何有效地将NaN放入Pandas Dataframe?

问题描述 投票:2回答:3

我有一个df,其中包含分类和数字数据

df = {'Name':['Tom', 'nick', 'krish', 'jack'], 
       'Address':['Oxford', 'Cambridge', 'Xianjiang', 'Wuhan'], 
       'Age':[20, 21, 19, 18], 
       'Weight':[50, 61, 69, 78]} 
df = pd.DataFrame(df) 

我需要将每列中的50%随机替换为NaN,所以结果可能看起来像这张图片

enter image description here

如何使用最高效的技术来做到这一点,因为我有大量的行和列,并且我将重复很多次。

python pandas numpy dataframe nan
3个回答
2
投票

apply一起使用sample

sample

1
投票

如何使用最高效的技术来做到这一点,因为我有大量的行和列,并且我将重复很多次。

我认为您需要df_final = df.apply(lambda x: x.sample(frac=0.5)).reindex(df.index) Out[175]: Name Address Age Weight 0 Tom NaN NaN 50.0 1 NaN NaN NaN 61.0 2 krish Xianjiang 19.0 NaN 3 NaN Wuhan 18.0 NaN ,想法是创建随机数组,添加numpy并按一半长度进行比较,最后通过np.argsort设置NaN s:

DataFrame.mask

Performance

DataFrame.mask

0
投票

可以通过在元组范围内取随机数并对其进行循环,然后将其视为要用NaaN替换的索引来完成

示例:如果你有10个元组从随机数生成器设置范围到0到9以及并将以上操作的结果作为索引替换为NaN

© www.soinside.com 2019 - 2024. All rights reserved.