У меня есть такой фрейм данных.
Я хочу найти в столбцах zip
и div
, получить type
и применить этот результат ко всем уникальным почтовым индексам. В некоторой степени сводная функция, но вместо агрегатной функции возвращается фактическое значение (предположим, что существует только одна комбинация zip
и div
)
.
df1 = pd.DataFrame(list(product(list(range(100,200)), ['A','B','C','D','E'])), columns=['zip', 'div'])
df1 = df1.drop(df1.index[np.random.randint(0,499,size=100)]).reset_index()
df1['type'] = np.random.choice(['P','Q','R'],size=df1.shape[0])
Я пробовал применить функцию / лямбда, но она очень медленная. Мои данные содержат 500K строк в df1 с 41K уникальных zip
с и 15 уникальных div
с
Есть ли эффективный способ получить результат, подобный следующему.
df2 = pd.DataFrame({'zip':[100,101],'A':['Q','P'],'B':['Q','Q'],'C':['Q','P'],'D':['Q','R'],'E':['Q','P']})
Предположим, что zip не числовой.