使用issubset比较两个熊猫数据框列之间的设置值

时间:2018-11-19 23:36:09

标签: python python-3.x pandas dataframe set

我有一个熊猫数据框,其中有两列填充了熊猫集。我想检查一列中的所有值是否是另一列的子集。我以为下面的代码可以工作,但是看来您不能将.issubset()应用于两个带有集合的系列。

例如:

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 :(得分:2)

您可以像这样使用列表理解:

>>> [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

答案 1 :(得分:2)

首先请确保您确实有一系列的集合:

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

然后将语法糖<=用于set.issubset

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

0     True
1    False
dtype: bool