gpt4 book ai didi

python - MultiLabelBinarizer 可以表示值的计数吗?

转载 作者:行者123 更新时间:2023-11-30 09:17:58 25 4
gpt4 key购买 nike

假设我们在数据框列中有列表

df['a'][0] = ['earth','mars','earth','moon']
df['a'][1] = ['jupiter','pluto','sun']

有没有办法使用多标签二值化器来获取

             earth   mars   moon sun  jupiter  pluto
df['a'][0] 2 1 1 0 0 0
df['a'][1] 0 0 0 1 1 1

我想将其翻译为大量的过程代码

最佳答案

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

planet = pd.DataFrame()
planet['planet_group'] = ['group_a', 'group_b']
planet['planet_list'] = [
['earth', 'mars', 'earth', 'moon'], ['jupiter', 'pluto', 'sun']]

g_planet = []
l_planet = []

for row in planet.itertuples():
for i in row.planet_list:
l_planet.append(i.rstrip())
g_planet.append(row.planet_group)

data_tuples = list(zip(g_planet, l_planet))
new_planet = pd.DataFrame(data_tuples, columns=['group_name', 'value'])

new_planet['value'] = new_planet['value'].apply(lambda x: [x])
mlb = MultiLabelBinarizer()
finaldf = new_planet.join(pd.DataFrame(mlb.fit_transform(new_planet.pop('value')),
columns=mlb.classes_,
index=new_planet.index))
sumdf = finaldf.groupby('group_name').agg(lambda x: sum(x))

print(sumdf)

输出将是这样的

            earth  jupiter  mars  moon  pluto  sun
group_name
group_a 2 0 1 1 0 0
group_b 0 1 0 0 1 1

我所做的是更改您的数据集,为每个列表添加名称,然后将其转换为包含名称和值的新数据框,其中名称包含相关列表中的一颗行星。然后应用到 MultiLableBinarier 后,我们按用户分组并对里面的值求和。

希望对你有帮助。

关于python - MultiLabelBinarizer 可以表示值的计数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50260642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com