How can I randomly make n% values null in a pandas series? Let’s say I want 20% null values in my dictionary, series, or list.
input something =
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'}
expected output with 20% null =
{0: 'a', 1: null, 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: null, 7: 'h', 8: 'i', 9: 'j'}
Advertisement
Answer
You can just use series.sample(frac=%)
to index and set the values in original series as None.
s = pd.Series({0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'}) s[s.sample(frac=0.4).index] = None #Set 40% to None print(dict(s))
{0: 'a', 1: 'b', 2: None, 3: None, 4: None, 5: 'f', 6: 'g', 7: 'h', 8: None, 9: 'j'}