簡體   English   中英

如何在 pandas dataframe 中編寫以下 SQL 語句?

[英]How to write the following SQL statement in pandas dataframe?

幾天前我剛進入 pandas。 我想試試我以前用 SQL 做的事情,然后用 pandas dataframe 試試,不使用 pandasql,誰能給我一些線索?

> SELECT TOP 1 col FROM ( SELECT 
>     col AS col, 
>     LEN(col) AS length,
>     CAST(LEFT(col, 20) AS numeric(20,0)) AS col_p1,
>     (CASE
>         WHEN LEN(col) > 20 THEN CAST(RIGHT(col,LEN(col) - 20) AS numeric(20,0))
>     END) AS col_p2  FROM table_a WHERE SIGN(CAST(LEFT(col,2) AS SMALLINT)) = 1 ORDER BY length DESC, col_p1 DESC, col_p2 DESC )

您可以將查詢轉換為樹和 go 從葉子到根節點(又名關系代數樹)。 這就是我的意思:

  1. 你從嵌套表開始
SELECT [COLUMNS]  FROM table_a WHERE [CONDITION] ORDER BY [CRITERIA]
  1. 然后你 go 和 select 只有有趣的行:
WHERE SIGN(CAST(LEFT(col,2) AS SMALLINT)) = 1 

# equivalent to  mask = df['col'].apply(lambda val: int(val[:2]) > 0 )
# and then you apply the mask to the dataframe
  1. 在此步驟之后,您 go 並創建新列,連接並重命名它們:

CAST(LEFT(col, 20) AS numeric(20,0)) AS col_p1,
     (CASE
         WHEN LEN(col) > 20 THEN CAST(RIGHT(col,LEN(col) - 20) AS numeric(20,0))
     END) AS col_p2


# for those 2, you can generate a numpy array and add it to the dataframe


# and then you rename your columns :
#      df.columns = [...]
  1. 對於排序,您可以使用sort_values
ORDER BY length DESC, col_p1 DESC, col_p2 DESC 
# equivalent to df.sort_values(by =['length',...],ascending=False)
  1. 最后:
SELECT TOP 1 col FROM T 
# equivalent to T[:1,'col']

其中 T = 是嵌套表。

暫無
暫無

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

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