Панды применяют уникальное случайное число к nan, чтобы перейти к следующей строке

#python #pandas #numpy

Вопрос:

 import pd as pandas
import random
import numpy as np 

data = {'Item_No':['001', '002', '003','004', '005', '006','007','008','009'], 
        'Group_code':[331, 332, 333, 333, 333, 331, 331, nan, nan]} 
df = pd.DataFrame(data)

 

Я хотел бы применить уникальное случайное число к » nan » и сохранить код группы там, где существует код группы.
Я попробовал следующее, но, похоже, не могу правильно понять синтаксис, что я делаю не так.

 df['Group_Code'] = df['Group_Code'].apply(lambda v: (random.random() * 1000) if pd.isnull(v['Group_Code'] else v['Group_Code'], axis = 1))
 

Ответ №1:

Шаг 0:-

Ваш Фрейм Данных:-

 data = {'Item_No':['001', '002', '003','004', '005', '006','007','008','009'], 
        'Group_code':[331, 332, 333, 333, 333, 331, 331, np.nan, np.nan]} 
df = pd.DataFrame(data)
 

Шаг 1:-

Сначала определите функцию:-

 def func(val):
    if pd.isnull(val):
        return random.random() * 1000
    else:
        return val
 

Шаг 2:-

Тогда просто используйте apply() метод:-

 df['Group_code']=df['Group_code'].apply(func).astype(int)
 

Теперь, если вы напечатаете df , вы получите ожидаемый результат

Комментарии:

1. невозможно умножить последовательность на не-int типа «float». Я изменю столбец на тип int.

2. Я отредактировал свой ответ, просто посмотрите, следуйте инструкциям @amit singh……между тем, если этот ответ помог вам, попробуйте принять этот ответ

3. Я пошел с поплавком 😉