gpt4 book ai didi

python - 从 csv 加载 str.get_dummies() panda df 的问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:18 25 4
gpt4 key购买 nike

我有一个 CSV 文件,其内容包含专家和他/她知道的技能列表,如下所示

0   'Performance'   'Data'  
1 'Compiling' 'Algorithms'
3 'Data' 'Algorithms'

我想根据哪个专家拥有哪些技能来创建一个 0-1 矩阵

类似于

ID    Performance Data Compiling Algorithms 
0 1 1 0 0
1 0 0 1 1
2 0 1 0 1

然后将此矩阵存储在字典中,例如

(0,Performance): 1, (0:Data):1 , (0:Compiling):0, (0:Algorithms):0
(1,Performance): 0, (1:Data):0 , (1:Compiling):1, (1:Algorithms):1
(2,Performance): 0, (2:Data):1 , (2:Compiling):0, (2:Algorithms):1

到目前为止我的尝试是

df1 = pd.read_csv('Expert_Skill_10KNodes.csv', sep=";")

df2= (df1.iloc[:,0].str.get_dummies(sep=','))

import itertools
Expert_Skill=({(x,y):df2[y][x] for x, y in list(itertools.product(df2.index, df2.columns))})

代码运行没有错误,但没有产生所需的输出,它只是跳过了专家拥有的大部分技能

最佳答案

要获得所需的输出,您可以先将 pd.dummy_values() 应用于每一列,然后按如下方式应用按列的 np.sum

    id  skill1  skill2
1 0 'Performance' 'Data'
2 1 'Compiling' 'Algorithms'
3 3 'Data' 'Algorithms'

鉴于上面的 pd.DataFrame

 import pandas as pd
dummy_dataframes = [pd.get_dummies(df[skill_col]) for skill_col in ['skill1', 'skill2']
dummy_concat = pd.concat(dummy_dataframes).fillna(0).astype(int)

这会给你一些更接近的东西,但是一个 id 有多行

    'Algorithms'    'Compiling' 'Data'  'Performance'
1 0 0 0 1
2 0 1 0 0
3 0 0 1 0
1 0 0 1 0
2 1 0 0 0
3 1 0 0 0

您现在可以做的就是按列应用np.sum

import numpy as np
dummy_concat.reset_index().groupby('index').apply(np.sum, axis=0).drop('index',axis=1)

获得所需的输出。

'Algorithms'    'Compiling' 'Data'  'Performance'

1 0 0 1 1
2 1 1 0 0
3 1 0 1 0

关于python - 从 csv 加载 str.get_dummies() panda df 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317824/

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