簡體   English   中英

替換mysql python中的列值的邏輯

[英]Logic to replace column value in mysql python

+--- -----+------------+-------------+
|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

我將其移入了熊貓數據框。 現在我該怎么寫這個邏輯

這是你想要的嗎?

select (case when master_id = 0 then product_id else master_id end) as master_id,
       product_id, products
from t;

您不需要熊貓,您可以直接通過數據庫進行操作。

如果您只想以不同的方式顯示記錄:

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

如果要使用熊貓數據框,則可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM