Используйте issubset для сравнения установленных значений между двумя столбцами панд данных - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть пандас с двумя столбцами, заполненными наборами панд. Я хочу проверить, что все значения в одном столбце являются подмножеством другого столбца. Я думал, что приведенный ниже код будет работать, но, похоже, вы не можете применить .issubset () к двум сериям с наборами.

Ex:

data = [[['one','orange','green'],['one','orange']],[['milk','honey'],['Clarke', 'honey']]]

df = pd.DataFrame(data, columns=['Column_1','Column_2'])

Are_all_column_2_values_valid = df.loc[:, 'Column_2'].apply(set).issubset(df.loc[:, 'Column_1'])

desired_output = pd.series([True,False])

Все значения в обоих наборах будут строками.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Сначала убедитесь, что у вас есть серия наборов:

df = df.apply(lambda x: x.apply(set))

Затем используйте синтаксический сахар <= для set.issubset:

print(df['Column_2'] <= df['Column_1'])

0     True
1    False
dtype: bool
0 голосов
/ 20 ноября 2018

Вы можете использовать понимание списка следующим образом:

>>> [set(v).issubset(i) for v, i in zip(df.Column_2, df.Column_1)]
[True, False]

или как серия:

>>> pd.Series(set(v).issubset(i) for v, i in zip(df.Column_2, df.Column_1))
0     True
1    False
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...