извлечь значения из фрейма данных

1

Первый и второй кадры данных:

import pandas as pd
d = {'0': [2154,799,1023,4724], '1': [27, 2981, 952,797],'2':[4905,569,4767,569]}
df1 = pd.DataFrame(data=d)

а также

d={'PART_NO': ['J661-03982','661-08913', '922-8972','661-00352','661-06291',''], 'PART_NO_ENCODED': [2154,799,1023,27,569]}
df2 = pd.DataFrame(data=d)

Я хочу получить соответствующую part_no для каждой строки в df1, чтобы результирующий фрейм данных выглядел так:

d={'PART_NO': ['J661-03982','661-00352',''], 'PART_NO_ENCODED': [2154,27,4905]}
df3 = pd.DataFrame(data=d)

Этого я могу достичь следующим образом:

df2.set_index('PART_NO_ENCODED').reindex(df1.iloc[0,:]).reset_index().rename(columns={0:'PART_NO_ENCODED'})

Но вместо передачи reindex(df1.iloc[0,:]) одно значение, которое 0,1 в момент времени я хочу получить для всех строк в df1 соответствующей part_no. Пожалуйста помоги?

  • 0
    Определение d для df2 неверно.
Теги:
pandas
dataframe

1 ответ

0

Второй блок данных можно использовать в качестве словаря для замены:

df3 = df1.replace(df2.set_index('PART_NO_ENCODED').to_dict()['PART_NO'])

Значения, которые не находятся в df2, не будут заменены. Они должны быть идентифицированы и отброшены:

df3 = df3[df1.isin(df2['PART_NO_ENCODED'].tolist())]
#            0          1          2
#0  J661-03982  661-00352        NaN
#1   661-08913        NaN  661-06291
#2    922-8972        NaN        NaN
#3         NaN        NaN  661-06291

Вы можете позже заменить отсутствующие значения '' или '' или любое другое значение по вашему выбору с помощью fillna.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню