Условная замена содержимого столбца DataFrame на основе списка - PullRequest
0 голосов
/ 22 октября 2018

У меня есть фрейм данных и список, и я пытаюсь обновить столбцы базы данных фрейма на основе списка.

df= pd.DataFrame()
df['ID']=[1,2,3,4,5,6]
df['Quantity']=[100,10,20,30,40,50]
zero_list=[2,3]

Я хочу заменить «Количество» на ноль дляИдентификаторы упоминаются в нулевом списке.

Один из способов сделать это - преобразовать список в кортеж и использовать np. Где я хочу рассмотреть альтернативный способ сделать это, как преобразование из списка вкортеж по-прежнему выдает ошибку хеширования.

Следующая таблица получена из цикла for:

                                   id     Quantity
0                                  []         0
1                                  []         0
2                                  []         0
3                                  []         0
4                                  []         0
5                                  []         0
6                                  []         0
7                                  []         0
8                                  []         0
9                                  []         0
10                                 []         0
11                                 []         0
12                                 []         0
13                                 []         0
14                                 []         0
15              [20529, 25000, 22123]         0
16                                 []         0

, и я создаю нулевой список из строки 15.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Звучит так, как вам нужно:

df.loc[df['ID'].isin(zero_list),'Quantity']=0

Поэтому используйте loc, чтобы получить значения в столбце ID, которые находятся в zero_list, а затем установите Quantity ноль столбца,

или используйте eval, в основном то же самое:

df.loc[df.eval('ID in @zero_list'),'Quantity']=0
0 голосов
/ 22 октября 2018

Попробуйте

df.loc[df['ID'].isin(zero_list), 'Quantity']=0

df['ID'].isin(zero_list) создал маску, как np.where

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...