根据列元素编号长度过滤数据框(其中 1 个特定列的类型为 'object')(关联规则分析)

Filtering a dataframe (where 1 specific column is type 'object') based on the columns element number length (Association Rule Analysis)

我有一个数据集,其中有一列标记为 'antecedents',其中包含一个元素列表,类型为 'object',如下所示。如何将我的数据集过滤为 return 仅特定前提列的元素编号长度为 1 的行?价值观

前项列示例:

(苹果、香蕉)

(苹果、梨)

(苹果、香蕉、梨)

(苹果)

我正在做关联规则分析,只想要有 1 个前提的行(在上面的例子中是 APPLE),到目前为止我有:

df[df['antecedents'] 现在检查先行列中元素对象列表的长度,并且只检查先行列长度为 1 的 return 行

我不确定如何访问该前提列中的 return 行,其长度为 1(前提列中只有一个元素)。

您可以使用 built-in .apply() 函数。

def antecedent_length(s):
    # Calculate the length of the antecedent
    # `s` is the value in each row
    return len(s)

df[df.antecedents.apply(antecedent_length) == 1]

根据数据的具体格式,您可能需要调整函数以正确计算长度。