Frozenset to list 产生错误的结果

Posted

技术标签:

【中文标题】Frozenset to list 产生错误的结果【英文标题】:Frozenset to list yields wrong results 【发布时间】:2018-09-02 05:21:52 【问题描述】:

我所做的是:

a = dataframe.antecedants
print(type(a[0]))
print(a[10])
b = a.tolist()
print(type(b[10]))
print(b[10])
c = [list(x) for x in a]
print(type(c[10]))
print(c[10])

我试图将我的 apriori 数据帧保存到 Elasticsearch,因为它包含 freezeset,所以我遇到了一些错误,所以将 freezeset 转换为列表,在这里当我将我的 freezeset 转换为列表时,我得到了错误的结果。为什么我会这样?我只想将 freezeset 列转换为列表列表。 forzenset 数据如下:

示例:

0                 (1)
1               (522)
4               (349)
5                (37)
6               (372)
7                (37)
8               (373)
9                (37)
10              (372)
11              (349)
12              (373)
13              (349)
14              (372)
15              (373)
16         (372, 349)
17          (372, 37)
18          (37, 349)
19              (372)
20              (349)
21               (37)
22         (349, 373)
23          (37, 373)

我正在使用的库是:

import pandas as pd
import numpy as np
from pandas.io.json import json_normalize
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
from elasticsearch import Elasticsearch
import json

然后:

dataframe = apriori(dataframe, min_support=0.1, use_colnames=True)
dataframe = association_rules(dataframe, metric="lift", min_threshold=1)
new = dataframe.copy()

基本上将listsfrozenset 列转换为list 是我想要实现的目标。

更新

虽然当我这样做的时候:

my_list = []
for antecedant in new.antecedants:
    my_list.append(list(antecedant))
my_list

这行得通!但是:

column_values = pd.Series(my_list)
new.insert(loc=0, column='new_column', value=column_values)
new

但又在数据框中给出了错误的结果。

【问题讨论】:

【参考方案1】:
new.reset_index(drop=True, inplace=True)

为我工作!如您所见,在先验和关联规则形成后索引不连续,因此重置索引帮助了我!

【讨论】:

以上是关于Frozenset to list 产生错误的结果的主要内容,如果未能解决你的问题,请参考以下文章

Python3基础 frozenset 使用list创建frozenset

[python数据结构] hashable, list, tuple, set, frozenset

python frozenset集合(17)

Spark join 产生错误的结果

Python List to Float转换[关闭]

Python3之set, frozenset记录