我正在嘗試使用 SQL 中可用的 SQL“Row_number over”函數(shù)為我的數(shù)據(jù)幀記錄編號(hào),但它導(dǎo)致錯(cuò)誤,如圖所示。請(qǐng)注意,我不希望使用 Pandas 函數(shù)對(duì)記錄進(jìn)行編號(hào)。這是代碼df1.head()df1.head 語(yǔ)句的輸出date beef veal pork lamb_and_mutton broilers other_chicken turkey0 1944-01-01 00:00:00.000000 751.0 85.0 1280.0 89.0 NaN NaN NaN1 1944-02-01 00:00:00.000000 713.0 77.0 1169.0 72.0 NaN NaN NaN2 1944-03-01 00:00:00.000000 741.0 90.0 1128.0 75.0 NaN NaN NaN3 1944-04-01 00:00:00.000000 650.0 89.0 978.0 66.0 NaN NaN NaN4 1944-05-01 00:00:00.000000 681.0 106.0 1029.0 78.0 NaN NaN NaNp = """SELECT ROW_NUMBER() OVER(ORDER BY date ASC) AS Row#, beef,vealFROM df1"""df1 = pysqldf(p)一旦我執(zhí)行這個(gè)語(yǔ)句,它就會(huì)拋出一個(gè)錯(cuò)誤此代碼來(lái)自 Python 3 版本。正常的 SQL 查詢可以工作,但 Python 不可用/不支持此 row_number 函數(shù)。你能幫我解決這個(gè)問(wèn)題嗎?我收到一個(gè)操作錯(cuò)誤
2 回答

寶慕林4294392
TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
問(wèn)題很簡(jiǎn)單,你可能已經(jīng)想通了。# 打破了整個(gè)事情,因?yàn)檫@是一個(gè)無(wú)法識(shí)別的標(biāo)記。
如果您忽略這一點(diǎn),您的代碼應(yīng)該可以工作。
from pandasql import sqldf
q1='select beef, veal, ROW_NUMBER() OVER (ORDER BY date ASC) as RN FROM df1'
df_new=sqldf(q1)
此外,將標(biāo)頭命名為與基本語(yǔ)法不同的名稱也是一個(gè)好習(xí)慣。日期和行可以是 SQL 中的函數(shù),因此您最好使用 'RN' 表示行列,使用 'date_' 或 'date_of_purchase' 表示日期。

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用以下兩行代碼在 Pandas 中實(shí)現(xiàn)相同的功能:
按日期對(duì)數(shù)據(jù)框進(jìn)行排序
>>>df1.sort_values(by='date')
添加名為“Row#”的附加列
>>>df1["Row#"]=range(1,len(df1["date"])+1)
添加回答
舉報(bào)
0/150
提交
取消