优先级和拆分并在Pandas中添加新列

sczxawaw  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(89)

已锁定5天。此时正在解决disputes about this question’s content。当前不接受新的答案或交互。

伙计们,我这里有这个excel数据作为

我想把它转换成这样

FACTORYLINE代码只是VBR
SMP NO =标准(优先级1)
USAP NO =美国(优先级2)
OE编号= OEM(优先级3)
忽略PG订单
我通过power query实现了这一点。我是panda和python的新手,我很想知道我如何用panda实现这一点。我想在OE NO使用split。但还是坚持了下来

xxslljrj

xxslljrj1#

问题中最重要的部分是在melt之前清理数据:

d = {'V-Bright NO.': 'Factory Part', 'SMP NO.': 'STD', 'USAP NO.': 'USA', 'OE NO.': 'OEM'}
p = {'STD': 1, 'USA': 2, 'OEM': 3}
c = ['FactoryLinecode', 'Factory Part', 'Linecode', 'InterchangePart', 'Priority']

out = (df.rename(columns=d)[d.values()]
         .melt(['Factory Part'], var_name='Linecode', value_name='InterchangePart')
         .assign(InterchangePart=lambda x: x['InterchangePart'].str.split('\n'),
                 Priority=lambda x: x['Linecode'].map(p), FactoryLinecode='VBR')
         .explode('InterchangePart')[c])

输出量:
| 工厂生产线代码|工厂零件|线路代码|互换零件|优先级|
| - -|- -|- -|- -|- -|
| 可变速率|VB-9400语言|标准差|铀酰499|一个|
| 可变速率|VB-9400语言|美国|报告编号504603| 2个|
| 可变速率|VB-9400语言|贴牌生产|小行星27301|三个|
| 可变速率|VB-9400语言|贴牌生产|小行星0986221077|三个|

相关问题