Python 3.x 根据另一列的条件替换列的内容
我有一个熊猫数据框。一列有字符串变量,另一列有1和0。根据字符串列的每个值出现的百分比阈值1,我想用1或0替换该值Python 3.x 根据另一列的条件替换列的内容,python-3.x,pandas,Python 3.x,Pandas,我有一个熊猫数据框。一列有字符串变量,另一列有1和0。根据字符串列的每个值出现的百分比阈值1,我想用1或0替换该值 'train\u data'数据框的两列是“问题”和“客户争议?” 发行 账单 付款/收款、汇款 信用报告信息不正确 账单 交易问题 贷款修改、收款、取消抵押品赎回权 贷款服务、付款、托管账户 贷款修改、收款、取消抵押品赎回权 信用卡保护/债务保护 消费者争议? 不 不 不 不 不 不 不 对 没有 我的代码: b = pd.crosstab(train_data['Issue']
'train\u data'
数据框的两列是“问题”和“客户争议?”
发行
账单
付款/收款、汇款
信用报告信息不正确
账单
交易问题
贷款修改、收款、取消抵押品赎回权
贷款服务、付款、托管账户
贷款修改、收款、取消抵押品赎回权
信用卡保护/债务保护
消费者争议?
不
不
不
不
不
不
不
对
没有
我的代码:
b = pd.crosstab(train_data['Issue'], train_data['Consumer disputed?']).apply(lambda r: r/r.sum(), axis=1)
b['Issue_max'] = np.where(b[1]>=0.2, 1, 0)
train_data = train_data.merge(b, on='Issue', how='left')
然后删除在列_数据中合并的不需要的b列
for x in [1,0, 'Issue']:
del train_data[x]
现在代码看起来很混乱。有人有更简单的代码吗?您可以使用它来避免合并操作(以及不需要的列):
最后的.astype(int)
是一种将布尔值转换为1
或0
的简单方法,可用于避免合并操作(以及不需要的列):
.astype(int)
最后是一种将布尔值转换为1
或0
的简单方法。您能提供一点数据片段吗?您能提供一点数据片段吗?
train_data['Issue_max'] = train_data.groupby('Issue')['Consumer disputed?'] \
.transform(lambda g: (g.sum() / len(g)) >= 0.2) \
.astype(int)