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

5 python set dataframe python-3.x pandas

我有一个 pandas 数据框,其中有两列,其中填充了 pandas 集。我想检查一列中的所有值是否都是另一列的子集。我认为下面的代码可以工作,但似乎你不能将 .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])
Run Code Online (Sandbox Code Playgroud)

两组中的所有值都将是字符串。

任何帮助将不胜感激!

sac*_*cuL 2

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

>>> [set(v).issubset(i) for v, i in zip(df.Column_2, df.Column_1)]
[True, False]
Run Code Online (Sandbox Code Playgroud)

或者作为一个系列:

>>> pd.Series(set(v).issubset(i) for v, i in zip(df.Column_2, df.Column_1))
0     True
1    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)