Pandas Dataframes: значение столбца в списке, вложенного в другой столбец, той же строки? - PullRequest
0 голосов
/ 25 октября 2019

Я работаю с фреймом данных Pandas, похожим на:

     My_date      Something_else    My_list
0    25/10/2019   ...               [25/10/2019, 26/10/2019]
1    03/07/2019   ...               [28/11/2017, 12/12/2017, 26/12/2017]
2    09/04/2019   ...               [11/06/2015]

Я хотел бы проверить, есть ли значение в столбце с именем " My_date " в списке ната же строка, столбец " My_list ". Например, здесь я хотел бы получить следующий вывод: векторно или очень эффективно :

     Result
0    true
1    false
2    false

Я мог бы сделать это, используя ' для ', различные методы описаны здесь например. Однако я знаю, что итерация редко является лучшим решением , тем более что моя таблица содержит более 1 миллиона строк, а многие из списка имеют 365 значений. (Но, как показано выше, эти списки не всегда диапазоны дат .)

Я знаю, что существует много способов сделать векторные вычисления в DataFrames, используя. loc или. eval например. Дело в том, что в моем случае ничего не работает должным образом из-за этих вложенных списков ... Таким образом, я бы хотел найти векторизованное решение , чтобы сделать это. Если это имеет значение, все мои « даты » относятся к типу pandas.Timestamp.

Возможно, есть другие вопросы, связанные с аналогичными проблемами, однако я не нашел подходящего ответа или вопроса, используямои собственные слова. Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 25 октября 2019

Попробуйте:

df['Result'] = df.apply(lambda x: x['My_date'] in x['My_list'], axis=1)

df=pd.DataFrame({'My_date' : ['25/10/2019','03/07/2019','09/04/2019'], 'My_list' : [['25/10/2019', '26/10/2019'],['28/11/2017', '12/12/2017', '26/12/2017'],['11/06/2015']]})
df['Result'] = df.apply(lambda x: x['My_date'] in x['My_list'], axis=1)

Выходы:

      My_date                               My_list  Result
0  25/10/2019              [25/10/2019, 26/10/2019]   True
1  03/07/2019  [28/11/2017, 12/12/2017, 26/12/2017]  False
2  09/04/2019                          [11/06/2015]  False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...