#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. Я пошел с поплавком 😉