Python python 处理数据

lyyyyyyy · 2020年10月29日 · 最后由 陈恒捷 回复于 2020年10月30日 · 2998 次阅读

Excel 表 1

Excel 表 2

根据两张表返回如下类型数据
{plan_code:{"objective":"A1|A1+C"}}
拿 name2 举例:
在表 1 中有 4 个 name2,只取第 1 个,生成 plan_code 为"AB_123"
在表 2 中有 N 个 name2,只取第 1 个,判断 EFGH(对应表 2 中 A1, A2, A1+C, A1+D) 列有没有值,如果有,则作为 objective 的值,如果有多个则用"|"连接
所以生成 {"AB_123": {"objective": "A1|A1+D"}}

我用 python 写了一大串,看看有没有大佬有更简单的方法来实现。

共收到 7 条回复 时间 点赞

从后往前把 plan_name 当 key,把 plan_code 和 EFGH 的拼接作为 value 放进 map?

需求看不懂。

Ouroboros 回复

这么理解好像可以= =

个人思路:

先通过 sql 取到所有素材:

select 
CONCAT(a.plan, '_', a.code) as key,  
CONCAT(if(b.A1=1, 'A1|', ''), if(b.A2=1, 'A2|', ''), if(b.A1+C=1, 'A1+C|', ''), if(b.A1+D=1, 'A1+D|', '')) as value
from 表1 as a left join 表2 as b 
on a.plan_name = b.plan_name where a.plan_name = 'name2'`
limit 1

,然后 value 处理下,去掉最后的|,再根据你的结构把 key、value 拼起来。

如果要遍历所有 plan_name ,那前面加个去重获取全部 plan_name 的 sql ,然后用一个循环遍历 plan_name 就好。代码应该不会太复杂。

陈恒捷 回复

忘说了,这是两个 excel 表= =

陈恒捷 回复

我觉得我写的复杂了,有 50 行

lyyyyyyy 回复

直接贴代码呗?这样才好根据具体代码给建议。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册