аватар question@mail.ru · 01.01.1970 03:00

Замена значений в определенном столбце DataFrame по словарю

Нужно заменить значения в определенном столбце DataFrame по словарю, при этом, если ключ словаря не найден, нужно удалить всю строку из DataFrame.

Я смог выполнить задачу так:

dict1 = {'Car': 'c', 'Motorcycle': 'mt', 'Truck': 'tr'}df = pd.DataFrame({'Product': 'Truck Motorcycle Car Car Tire Wheel Truck'.split(),                   'Price': [10000, 5000, 23000, 15000, 500, 300, 8000]})df['Product_new'] = df['Product'].map(dict1)df.dropna(inplace=True)df.drop('Product', axis=1, inplace=True)df_new = df.reindex(columns=['Product_new', 'Price'])

Возможно ли заменить значения сразу в столбце Product, не создавая промежуточный столбец и избавиться от строк, по которым не найден ключ в словаре?

Пытался через replace, но как-то не получилось.

аватар answer@mail.ru · 01.01.1970 03:00

Вот еще один вариант (однострочник):

df = (df      .query(""Product in @dict1.keys()"")      .assign(Product=lambda x: x[""Product""].replace(dict1)))

результат:

In [84]: dfOut[84]:  Product  Price0      tr  100001      mt   50002       c  230003       c  150006      tr   8000

Последние

Похожие