Python 具有if-else条件的透视表
我有一张桌子: 项目 位置 类别 生命周期 ftecount>3 BPSScore abc 班加罗尔 s 递增 41 3.98 系统 班加罗尔 s 十二烷基硫酸钠 35.3 3.98 系统 钦奈 任务 13 2. 3.98 EPS 班加罗尔 s 任务 5. 3.98 自由和开放源码软件 班加罗尔 s 十二烷基硫酸钠 6. 3.98 opc 诺伊达 任务 13 1. 3.98Python 具有if-else条件的透视表,python,pandas,numpy,machine-learning,data-science,Python,Pandas,Numpy,Machine Learning,Data Science,我有一张桌子: 项目 位置 类别 生命周期 ftecount>3 BPSScore abc 班加罗尔 s 递增 41 3.98 系统 班加罗尔 s 十二烷基硫酸钠 35.3 3.98 系统 钦奈 任务 13 2. 3.98 EPS 班加罗尔 s 任务 5. 3.98 自由和开放源码软件 班加罗尔 s 十二烷基硫酸钠 6. 3.98 opc 诺伊达 任务 13 1. 3.98 首先将类别列中的大写T替换为小写: df['category']=df['category'].str.replace('
首先将类别列中的大写T替换为小写:
df['category']=df['category'].str.replace('T','t')
现在使用pd.get_dummies()
、drop()
和reset_index()
方法:
out=pd.get_dummies(df.set_index('project').drop(['ftecount>3','bpssscore','lifecycle'],1)).reset_index()
out['ftecount>3']=df['ftecount>3'].gt(3).astype(int)
out['bpssscore']=df['bpssscore'].gt(3).astype(int)
最后使用gt()
和astype()
方法:
out=pd.get_dummies(df.set_index('project').drop(['ftecount>3','bpssscore','lifecycle'],1)).reset_index()
out['ftecount>3']=df['ftecount>3'].gt(3).astype(int)
out['bpssscore']=df['bpssscore'].gt(3).astype(int)
现在,如果您将打印出来
,您将得到:
您可以使用
pd.get_dummies()
来实现一个热编码结果,并使用lambda()
函数来过滤分数是否大于3
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)
输出测向