首页 > 解决方案 > 如何在DataFrame中将K个随机列值设置为空?

问题描述

import pandas as pd
df = pd.DataFrame( { 'A': [1,2,3,4],
                   'B': [10,20,30,40],
                   'C': [20,40,60,80]
                  }, )



df['A'] = ''

print(df)

我想将A列的K个值设置为空值,这些K值应该是随机选择的。A 列的那些 len(df)-K 值不会受到影响。我编写了这个函数来生成随机行索引,然后如何将这些索引的df的行值设置为空?

def random_rows(K=2, df):

  col_length = df.shape[1]
  row_indexes = [i for i in range(col_length)]
  if col_length<K:
     K = col_length

  selected_row_indexes = random.sample(row_indexes, K)

  return selected_row_indexes

标签: pythonpandas

解决方案


您可以使用sample来获取随机行并loc修改它们:

df.loc[df['A'].sample(n=2).index, 'A'] = '' # or whatever value you want

推荐阅读