Сравнение столбца DataFrame - PullRequest
       0

Сравнение столбца DataFrame

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

Я новичок в Python и с трудом нахожу документацию о том, как решить проблему, с которой я столкнулся.

Мне нужно знать, есть ли значения в df1 ['id']находятся в df2 ['id_list'], но наткнулись на загадку, когда я увидел, как значения были сохранены в df2

, когда я экспортирую значения, которые создают мою серию "id_list", он распечатывается точно так же, как я копировалниже, а там во лжи руб.Я не уверен, как сравнивать элементы разных серий.

надеюсь, что это имеет смысл, и любая помощь приветствуется!

import pandas as pd

df1 = {'id':['xx00000001', 'xx00000002', 'xx00000003', 'xx00000004', 'xx00000005']
        }
df2={'id_list': ['text','xx00000001\r\nxx00000003\r\nxx00000004', 'xx00000003', 'xx00000004\r\ntext\r\nxx00000006', 'ss11111\r\ntext\r\nzz00000006\r\nxx00000005']
        }
desired = {'id':['xx00000001', 'xx00000002', 'xx00000003', 'xx00000004', 'xx00000005'],
        'id_list': ['text','xx00000001\r\nxx00000003\r\nxx00000004', 'xx00000003', 'xx00000004\r\ntext\r\nxx00000006', 'ss11111\r\ntext\r\nzz00000006\r\nxx00000005'],
        'located': [False, False, 'xx00000003', 'xx00000004', 'xx00000005']
        }


df1=pd.DataFrame(df1)
df2=pd.DataFrame(df2)
desired_df = pd.DataFrame(desired)
print(df1)
print(df2)
print(desired_df)

1 Ответ

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

Для такого рода строковых проблем часто списочные выражения выполняются быстрее, чем встроенные pandas строковые методы.Вы можете сделать что-то вроде этого:

desired_df = df1.join(df2)

desired_df['located'] = [i1 if i1 in i2 else False for i1, i2 in zip(df1['id'], df2['id_list']) ]

>>> desired_df
           id                                      id_list     located
0  xx00000001                                         text       False
1  xx00000002       xx00000001\r\nxx00000003\r\nxx00000004       False
2  xx00000003                                   xx00000003  xx00000003
3  xx00000004             xx00000004\r\ntext\r\nxx00000006  xx00000004
4  xx00000005  ss11111\r\ntext\r\nzz00000006\r\nxx00000005  xx00000005
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...