python 的pandas库 .loc用法的一个很细节问题。索引和值被一起赋值过去了!!🤢
背景:
由于我想用lambda进行便利,于是我就写了很长一串代码。明细如下:
plan_order['新物料编码描述'] = plan_order.apply(lambda x : changed_code.loc[changed_code.loc[changed_code['旧物料编码'] == x['物料组件编码']].index, '新物料描述'] if x['物料组件编码'] in list(changed_code['旧物料编码']) else '', axis=1)
结果:
每一行值前面还有索引在最前面!!!
分析:
这行代码太长了,我把关键提取出来:
changed_code.loc[changed_code.loc[changed_code['旧物料编码'] == x['物料组件编码']].index, '新物料描述']
这里由于lambda一行只能让我做一次判断,我在找寻某一条数据的索引的时候。用了以下代码找index
changed_code.loc[changed_code['旧物料编码'] == x['物料组件编码']].index
这样赋值会将索引代进去。
解决方案
将index转化为数字就好了
changed_code.loc[changed_code['旧物料编码'] == x['物料组件编码']].index[0]
问题解决,好起来了兄弟们