Python sklearn preprocessing.LabelEncoder或DataFrameMapper是否支持pandas获取块?

Python sklearn preprocessing.LabelEncoder或DataFrameMapper是否支持pandas获取块?,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我有一个大csv文件,因此我使用pandasget_chunk()函数在每个循环中获取数据帧。 我在每个循环中都使用了LabelEncoder(),但我发现标签不是全局统一的。 代码 以下是csv格式的数据: title_a^title_b^title_c a^b^c aa^bb^cc aaa^bbb^ccc aaaa^bbbb^cccc 第一个循环中的映射: {u'a':0,u'aa':1} 第二个循环中的映射: {u'aaaa':1,u'aaa':0} “a”和“aaa”具有相同的键或值(

我有一个大csv文件,因此我使用pandasget_chunk()函数在每个循环中获取数据帧。 我在每个循环中都使用了LabelEncoder(),但我发现标签不是全局统一的。

代码

以下是csv格式的数据:

title_a^title_b^title_c
a^b^c
aa^bb^cc
aaa^bbb^ccc
aaaa^bbbb^cccc
第一个循环中的映射:
{u'a':0,u'aa':1}

第二个循环中的映射:
{u'aaaa':1,u'aaa':0}

“a”和“aaa”具有相同的键或值(键或值不重要), 问题是每个循环都有自己的映射

有任何建议或建议或API吗?
谢谢。

如果将标签编码器置于循环之外并在每个块上调用
transform
,它是否正常工作?不,它不工作。也不是全局单位你最好只阅读
title_a
,删除重复项并对其编码,然后将结果合并回来在实践中,“title_a”列可能非常大…为了防止OOM,所以使用get_chunk()我想你需要在这里维护某种全局指令不幸的是,我做了一个测试,每次调用
fit
时,LabelEncoder状态都会被清除,这就是为什么它会重置每个块的编码。就我个人而言,我只需加载title_a,删除重复项并将其附加到列表中,这样它就可以创建一个dfs列表,
concat
垂直地,调用
drop_duplicates
再次在最终df上减少df大小,
编码
,然后合并回来。如果连接dfs,您还可以从每个区块中筛选出任何已看到的标签
title_a^title_b^title_c
a^b^c
aa^bb^cc
aaa^bbb^ccc
aaaa^bbbb^cccc