循环不起作用。我试图按照if条件对行进行分组。但是,在运行代码之后,所有行都被分类为一个单独的类别“全局治理”。
# create a for loop to re-group as per the values mentioned above
for values in data['Area']:
if ((values=='corporate governance') | (values=='accounting') | (values== 'auditing') | (values=='manufacturing') | (values=='dao challenges')):
data['final group']='corporate governance'
elif (values=='blockchain governance' or values=='bct standards' or values== 'blockchain governance' or
values=='blockchain hashing' or values=='developers incentive' or values=='smart contract' or values=='Smart contract' ):
data['final group']='Blockchain Technology Governance'
elif (values=='Block chain and legal compliance' or values=='Decision Rights' or values=='Dispute resolution' or
values=='law' or values=='judicature'):
data['final group']='Judicature'
elif (values == 'Blockchain and Trust'):
data['final group']='Trust'
elif ((values=='Foreign Aid') | (values=='Global Commons governance') | (values=='global Commons governance')):
data['final group']='global governance'
elif (values=='Public governance' or values=='Rural governance' or values=='Usage of bct in governance' or values=='public governance' or
values=='Smart city' or values=='smart city' or values=='Rural governance' or values=='national records'):
data['final group']='governance'
elif (values=='Music' or values=='Waste management' or values=='blockchian and healthcare' or values== 'forest management' or
values=='healthcare' or
values=='Resource governance'):
data['final group']='Resource governance'
elif (values=='scientific publication' or values=='Academic Governance'):
data['final group']='Academia'
elif(values=='SDG' or values== 'carbon trading' or values=='environmental governance'):
data['final group']='Sustainable developemnt'
elif(values=='data governance' or values=='organisational data governance'):
data['final group']='Data governance'
elif(values=='digital platform governance' or values =='e commerce' or
values=='platform governance' or values=='product management'):
data['final group']='platform governance'
elif(values=='Supplychain'):
data['final group']=='Supplychain'
发布于 2022-05-02 15:24:20
从我的评论中扩展。循环循环遍历df列Area
中的每一行;但是,当它设置列final group
的值时,它将为列的每一行设置它。因此,您的dataframe中最后一行的Area
正在确定每一行的final group
值。相反,考虑一下像.apply()
这样的东西
def determine_final_group(area):
if area in ['corporate governance','accounting','auditing','manufacturing','dao challenges']:
return 'corporate governance'
elif area in ['blockchain governance','bct standards' ,'blockchain governance','blockchain hashing' ,'developers incentive' ,'smart contract' ,'Smart contract']:
return 'Blockchain Technology Governance'
elif area in ['Block chain and legal compliance' ,'Decision Rights' ,'Dispute resolution', 'law','judicature']:
return 'Judicature'
elif area == 'Blockchain and Trust':
return 'Trust'
elif ['Foreign Aid','Global Commons governance','global Commons governance']:
return 'global governance'
#continue the elif logic using this pattern...
data['final group'] = data['Area'].apply(determine_final_group)
发布于 2022-05-02 15:26:56
当您执行像data['final group']='corporate governance'
这样的赋值时,为整个列分配这个值,而不仅仅是一行。
def get_final_group(values):
if values == 'corporate governance' or values == 'accounting' or values == 'auditing' or values == 'manufacturing' or values == 'dao challenges':
return 'corporate governance'
if (values == 'blockchain governance' or values == 'bct standards' or values == 'blockchain governance' or
values == 'blockchain hashing' or values == 'developers incentive' or values == 'smart contract' or values == 'Smart contract'):
return 'Blockchain Technology Governance'
...
df['final_group'] = df['Area'].map(get_final_group)
备注及影响:
returning
值,所以不需要elif
。|
-这是为了一点点或。if
,使其更具可读性,例如: if领域(“公司治理”、“会计”、“审计”、“制造”、“道挑战”):返回“公司治理”#等等。'smart contract'
和'Smart contract'
这样的副本。df‘’final_group‘=df’‘Area’.str.lower().map(Final_group)https://stackoverflow.com/questions/72088204
复制相似问题