如何优雅地对熊猫中的一系列列表进行热编码[重复]

     2023-03-11     138

关键词:

【中文标题】如何优雅地对熊猫中的一系列列表进行热编码[重复]【英文标题】:How to elegantly one hot encode a series of lists in pandas [duplicate] 【发布时间】:2019-02-10 20:02:30 【问题描述】:

所以我有以下数据:

>>> test = pd.Series([['a', 'b', 'e'], ['c', 'a'], ['d'], ['d'], ['e']])
>>> test

0    [a, b, e]
1       [c, a]
2          [d]
3          [d]
4          [e]

我正在尝试将列表中的所有数据一次性编码回我的数据框中。看起来像这样:

>>> pd.DataFrame([[1, 1, 0, 0, 1], [1, 0, 1, 0, 0],
              [0, 0, 0, 1, 0], [0, 0, 0, 1, 0],
              [0, 0, 0, 0, 1]],
             columns = ['a', 'b', 'c', 'd', 'e'])

    a   b   c   d   e
0   1   1   0   0   1
1   1   0   1   0   0
2   0   0   0   1   0
3   0   0   0   1   0
4   0   0   0   0   1

我尝试过研究,发现了类似的问题,但没有一个像这样。我尝试过:

test.apply(pd.Series)

但这并不能完全实现单热方面。这只是以任意顺序打开我的列表。我确信我可以找到一个冗长的解决方案,但我很高兴听到是否有更优雅的方式来执行此操作。

谢谢!

编辑:我知道我可以遍历我的test 系列,然后为找到的每个唯一值创建一个列,然后返回并再次遍历test,标记所述列为独特的价值。但这对我来说似乎不是很讨人喜欢,我相信有一种更优雅的方式来做到这一点。

【问题讨论】:

Scikit 即将获得升级后的 onehotencoder,它将对字符串进行编码,FWIW:medium.com/dunder-data/… 【参考方案1】:

sklearn 库中的MultiLabelBinarizer 对于这些问题更有效。它应该优先于applypd.Series。这是一个演示:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

test = pd.Series([['a', 'b', 'e'], ['c', 'a'], ['d'], ['d'], ['e']])

mlb = MultiLabelBinarizer()

res = pd.DataFrame(mlb.fit_transform(test),
                   columns=mlb.classes_,
                   index=test.index)

结果

   a  b  c  d  e
0  1  1  0  0  1
1  1  0  1  0  0
2  0  0  0  1  0
3  0  0  0  1  0
4  0  0  0  0  1

【讨论】:

如果在熊猫pd.DataFrame(test.values.tolist()).stack().str.get_dummies().sum(level=0) @Wen,是的,很好。说起来很丢脸,但我从来没有在概念上欣赏过stack,因此很少使用它。似乎也是效率的薄弱环节。 那就别用了 :-) pd.get_dummies(pd.DataFrame(test.values.tolist()),prefix_sep ='',prefix='').sum(level=0, axis = 1) 我不知道这个工具,我猜我的谷歌搜索词不够好,无法找到它。太棒了。谢谢! 请注意:使用 MultiLabelBinarizer 比 stack().str.get_dummies.sum() 方法快几倍。

如何将熊猫中的一列列表转换为Python中唯一值的稀疏DataFrame [重复]

】如何将熊猫中的一列列表转换为Python中唯一值的稀疏DataFrame[重复]【英文标题】:HowtoturnacolumnoflistsinpandastoasparseDataFrameoftheuniquevaluesinPython[duplicate]【发布时间】:2020-04-0208:03:57【问题描述】:对于每一行id,我都有一个作为pand... 查看详情

使用 scikit 学习的一种热编码和熊猫

...我正在从Pandas数据帧构建一个热编码函数,但无法弄清楚如何将数据取回数据帧。我明白了:"IndexError:只有整数、切片(:)、省略号(...)、numpy.newaxis(None)和整数或布尔数组是有效的指数如何将其重新整合回pan 查看详情

熊猫单热编码列到假人,包括“其他”编码[重复]

】熊猫单热编码列到假人,包括“其他”编码[重复]【英文标题】:Pandasone-hot-encodecolumnstodummies,includingan\'other\'encoding[duplicate]【发布时间】:2021-10-0621:43:39【问题描述】:我的最终目标是在Pandas列上进行一次热编码。在这种情况... 查看详情

如何始终如一地对具有变化值的数据帧进行热编码?

】如何始终如一地对具有变化值的数据帧进行热编码?【英文标题】:Howtoconsistentlyhotencodedataframeswithchangingvalues?【发布时间】:2018-06-1013:39:46【问题描述】:我正在以数据帧的形式获得内容流,每批在列中具有不同的值。例如... 查看详情

如何从熊猫系列中获取包含行索引的列表[重复]

】如何从熊猫系列中获取包含行索引的列表[重复]【英文标题】:HowtogetalistfromaPandas\'serieswhichincludestheindexoftherow[duplicate]【发布时间】:2019-09-2407:04:56【问题描述】:我有一个PandasDataFrame(从excel文件创建),我想在其中查看一... 查看详情

如何从具有熊猫系列对象和浮点数的列表中删除浮点值[重复]

】如何从具有熊猫系列对象和浮点数的列表中删除浮点值[重复]【英文标题】:HowdoIremovefloatvaluesfromalistwhichhaspandasseriesobjectsandfloats[duplicate]【发布时间】:2019-12-2905:17:10【问题描述】:我有一个列表,其中主要包含pandas系列对象... 查看详情

如何根据字典替换熊猫系列中的字符串组,并将值作为列表?

】如何根据字典替换熊猫系列中的字符串组,并将值作为列表?【英文标题】:Howtoreplacegroupofstringsinpandasseriesbasedonadictionarywithvaluesaslist?【发布时间】:2019-04-0406:47:59【问题描述】:我在***中找不到基于列表中值的字典进行替换... 查看详情

Flutter:如何正确地对“列表”进行 JSON 编码?

】Flutter:如何正确地对“列表”进行JSON编码?【英文标题】:Flutter:HowtoJSONencodea`List`properly?【发布时间】:2020-06-3014:09:29【问题描述】:我正在尝试使用Flutter通过RESTAPI将List传递给我的服务器。下面是代码Future<void>saveOrderI... 查看详情

按字符串长度对熊猫系列中的列表进行排序

】按字符串长度对熊猫系列中的列表进行排序【英文标题】:Sortlistinpandasseriesbylengthofstring【发布时间】:2018-10-2722:02:00【问题描述】:我想根据字符串的长度(最长在前)对数据框中的列表进行排序brandserie&tradition[&traditi... 查看详情

如何将熊猫系列的列值转换为Python中的列表?

】如何将熊猫系列的列值转换为Python中的列表?【英文标题】:HowtoconvertthecolumnvaluesofpandasseriestolistinPython?【发布时间】:2021-02-1012:02:15【问题描述】:我有一个熊猫系列,打印后看起来像-0NaN120.3072-16.87934.598421.9785-12.913dtype:float... 查看详情

如何根据列表中的项目复制熊猫中的行[重复]

】如何根据列表中的项目复制熊猫中的行[重复]【英文标题】:Howtoduplicaterowsinpandas,basedonitemsinalist[duplicate]【发布时间】:2013-04-0320:31:32【问题描述】:我有一个看起来像这样的pandas数据框:COLdataline1[A,B,C]其中数据列中的项目可... 查看详情

如何在每个组中估算熊猫数据框中的一列[重复]

】如何在每个组中估算熊猫数据框中的一列[重复]【英文标题】:howtoimputeacolumninpandasdataframewithineachgroup[duplicate]【发布时间】:2017-02-1615:26:35【问题描述】:全部,我有四列的数据框(\'key1\'、\'key2\'、\'data1\'、\'data2\')。我在da... 查看详情

熊猫将具有相同索引的一列值组合到列表中[重复]

...ndasDF,我正在努力以好看的格式打印它...有人可以告诉我如何组合来自同一列值的这两个值吗?data=\'Animal\':[\'DOG\',\'CAT\', 查看详情

创建一个新列表并根据熊猫系列的值填充它[重复]

】创建一个新列表并根据熊猫系列的值填充它[重复]【英文标题】:creatinganewlistandfillitbasedonthevaluesofapandasSeries[duplicate]【发布时间】:2018-11-0110:40:39【问题描述】:我正在尝试创建一个for循环,该循环遍历熊猫系列ageNew,它根据... 查看详情

替换熊猫数据框系列中的每个值[重复]

】替换熊猫数据框系列中的每个值[重复]【英文标题】:Replaceeveryvalueinapandasdataframeseries[duplicate]【发布时间】:2020-11-1518:47:09【问题描述】:所以我有一个数据框,我想用新字符串替换每个值。(通常我只会做df["col1"]="string",... 查看详情

如何按熊猫中的值对系列进行分组?

】如何按熊猫中的值对系列进行分组?【英文标题】:HowtogroupaSeriesbyvaluesinpandas?【发布时间】:2016-02-0216:38:45【问题描述】:我目前有一个dtypeTimestamp的pandasSeries,我想按日期对它进行分组(并且每个组中有很多行不同的时间)... 查看详情

如何使用 Keras 对字符串列表进行热编码?

】如何使用Keras对字符串列表进行热编码?【英文标题】:HowcanIonehotencodealistofstringswithKeras?【发布时间】:2019-10-0705:18:50【问题描述】:我有一个清单:code=[\'<s>\',\'are\',\'defined\',\'in\',\'the\',\'"editable\',\'parameters"\',\'\\n\',\'sect... 查看详情

将包含熊猫系列的列转换为特征[重复]

】将包含熊猫系列的列转换为特征[重复]【英文标题】:ConvertacolumnwhichcontainspandasSeriestofeatures[duplicate]【发布时间】:2020-06-1619:09:34【问题描述】:我的数据框如下:a0[8,10]1[12,7,9]如您所见,a列包含一个列表。该列表中的数字在... 查看详情