python - 用满足其他列条件的值填充列
问题描述
我有如下表:
con_no pr_no flag_1 flag_2
con_002 1000234 1 0
con_002 1000345 -1 0
con_002 1100200 1 1
con_002 1005890 0 0
con_003 1100367 0 0
con_003 1000445 1 1
con_003 1200334 -1 0
con_003 1140567 1 0
现在我想要另一列填充pr_no
其 flag_2 = 1 和其中 flag_1 = 1 在特定con_no
. 所以结果表应该看起来像
con_no pr_no flag_1 flag_2 Parent_pr
con_002 1000234 1 0 1100200 <---This belongs to con_002
con_002 1000345 -1 0
con_002 1100200 1 1 1100200 <---This belongs to con_002
con_002 1005890 0 0
con_003 1100367 0 0
con_003 1000445 1 1 1000445 <---This belongs to con_003
con_003 1200334 -1 0
con_003 1140567 1 0 1000445 <---This belongs to con_003
如何使用 python (pandas) 或 SQL 实现上述目标。实际上这个表在数据库(postgreSQL)中。所以一个 SQL 查询字符串也可以。
不过有一个问题。每次程序运行时,con_no
都会重新洗牌。有些pr_no
可能附加到新的或现有的(但不同的con_no
)。
解决方案
您应该将表与自身连接起来。如果您的数据在名为 的表中my_table
,则这样的查询应该可以工作:
with cte as (
select con_no, pr_no
from my_table
where flag_2 = 1)
select t.con_no, t.pr_no, t.flog_1, t.flog_2, cte.pr_no as parent_pf
from my_table as t
left outer join cte on (cte.con_no = t.con_no and t.flag_1 = 1)
推荐阅读
- java - Android Studio 3.1.2 - Lombok 抛出错误并要求不存在的选项
- php - 将输入数据发送到 yii1 上的模型属性时出错
- python - jupyter notebook(Conda)中的python版本冲突
- android - 未通过 JSON 解析获取数据
- c++ - 我该如何解决这个错误?“方法'str'无法解析”
- powershell - Powershell不断发送密钥
- javascript - 原始字符串到普通字符串 javascript
- python - 使用python从多个zip文件中提取注释
- sql - 如何获取在 SQL 中具有重复列组合的记录?
- javascript - AES/CBC/PKCS5PADDING IV - 从 Java 到 NodeJs 的解密