+--- -----+------------+-------------+
|master_id| product_id |products |
+---------+------------+-------------+
| 0 | 123 | home |
| 12 | 234 | office |
| 15 | 456 | home |
| 0 | 678 | office |
| 25 | 890 | home |
| 0 | 145 | office |
+---+-----------------+--------------+
我有这个表(只显示了一部分行,超过1000行),我想写一个逻辑,这样,每当
master_id = 0,master_id = product_id
我把它变成了pandas数据帧。 现在我该如何编写这个逻辑
答案 0 :(得分:1)
这是你想要的吗?
select (case when master_id = 0 then product_id else master_id end) as master_id,
product_id, products
from t;
答案 1 :(得分:1)
你不需要pandas,你可以直接通过数据库。
如果您只想以不同方式显示记录:
SELECT CASE master_id WHEN 0 THEN product_id ELSE master_id END AS master_id,
product_id,
products
FROM mytable
如果您确实想要更新数据库,那就更容易了:
UPDATE mytable
SET master_id = product_id
WHERE master_id = 0
答案 2 :(得分:1)
如果您想使用pandas数据帧,可以使用numpy.where函数
import numpy as np
import pandas as pd
# initialise dataframe
df = pd.DataFrame([[0, 12, 15, 0, 25],
[123, 234, 456, 678, 890],
['home', 'office', 'home', 'office', 'home']]).T
df.columns = ['master_id', 'product_id', 'products']
# Now do fix master_id
df.master_id = np.where(df.master_id == 0, df.product_id, df.master_id)
# New df:
master_id product_id products
0 123 123 home
1 12 234 office
2 15 456 home
3 678 678 office
4 25 890 home