2024-09-20 22:57:33 发布
网友
我有一张桌子:
希望输出为:
这里的条件是:
1.希望从列位置、类别的唯一值动态添加新列
2.在新列中,值应符合以下条件: --如果位置='Banglore',则在新列loc_Banglore中放入1或0
类似条件适用于所有位置唯一值和类别(在df中添加新列)
3.对于ftecount和bpss列,我们只需检查以下条件: --如果ftecount>;3,然后1,否则0
bpss列的逻辑相同。”
请帮我解决这个问题
首先将类别列中的大写T替换为小写:
df['category']=df['category'].str.replace('T','t')
现在使用pd.get_dummies()、drop()和reset_index()方法:
pd.get_dummies()
drop()
reset_index()
out=pd.get_dummies(df.set_index('project').drop(['ftecount>3','bpssscore','lifecycle'],1)).reset_index()
最后使用gt()和astype()方法:
gt()
astype()
out['ftecount>3']=df['ftecount>3'].gt(3).astype(int) out['bpssscore']=df['bpssscore'].gt(3).astype(int)
现在,如果您打印out,您将获得:
out
您可以使用pd.get_dummies()来实现一个热编码结果,并使用lambda()函数来过滤分数是否为>;3或不是
lambda()
df = pd.DataFrame({ 'project': ['abc', 'Sys', 'Syst' ,'EPS', 'foss', 'opc'], 'location': ['Bangalore' ,'Bangalore', 'Chennai', 'Bangalore', 'Bangalore', 'Noida'], 'category': ['s', 's', 'task', 's', 's', 'task'], 'ftecount': [41, 35.3, 2, 5, 6, 1], 'bpssscore': [3.98, 3.98, 3.98, 3.98, 3.98, 3.98] }) df['ftecount>3'] = df['ftecount'].apply(lambda x: 1 if x>3 else 0) df['bpssscore>3'] = df['bpssscore'].apply(lambda x: 1 if x>3 else 0) df = pd.concat([df['project'], pd.get_dummies(df['location'], prefix='loc'), pd.get_dummies(df['category'], prefix='cat'), df['ftecount>3'], df['bpssscore>3'] ], axis=1)
输出测向
首先将类别列中的大写T替换为小写:
现在使用
pd.get_dummies()
、drop()
和reset_index()
方法:最后使用
gt()
和astype()
方法:现在,如果您打印
out
,您将获得:您可以使用
pd.get_dummies()
来实现一个热编码结果,并使用lambda()
函数来过滤分数是否为>;3或不是输出测向
相关问题 更多 >
编程相关推荐