gpt4 book ai didi

python - 转换 pandas 数据框以用于 MultiLabelBinarizer

转载 作者:行者123 更新时间:2023-12-05 05:13:35 26 4
gpt4 key购买 nike

我的问题是:我怎样才能像这样转换数据框以最终在 scikit 的 MulitLabelBinarizer 中使用它:

d1 = {'ID':[1,2,3,4], 'km':[80,90,90,100], 'weight':[10,20,20,30], 'label':['A','B','C','D','E']}
df1 = pd.DataFrame(data=d1)
df1

ID km weight label
0 1 80 10 A
1 2 90 20 B
2 2 90 20 C
3 4 100 30 D

它应该像这样:

d2 ={'km':[80,90,100], 'weight':[10,20,30], 'label':['A',('B','C'),'D']}
df2 = pd.DataFrame(data=d2)
df2

km weight label
0 80 10 A
1 90 20 (B, C)
2 100 30 D

所以我可以在 MultiLabelBinarizer 中正确地使用数据:

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
mlb.fit(df2['label'])
mlb.transform(df2['label'])

array([[1, 0, 0, 0],
[0, 1, 1, 0],
[0, 0, 0, 1]])

注:原始数据超过100万行。

最佳答案

我想你需要这个:

d1 = {'ID':[1,2,3,4], 'km':[80,90,90,100], 'weight':[10,20,20,30], 'label':['A','B','C','D']}
df1 = pd.DataFrame(data=d1)
#Groupby and get tuple, like you need
df2 = pd.DataFrame(df1.groupby(['km','weight'])['label'].apply(lambda x: tuple(x.values)))
df2.reset_index(inplace=True)

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
mlb.fit(df2['label'])
mlb.transform(df2['label'])

关于python - 转换 pandas 数据框以用于 MultiLabelBinarizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494873/

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