我正在尝试使用 SQL 中可用的 SQL“Row_number over”函数为我的数据帧记录编号,但它导致错误,如图所示。请注意,我不希望使用 Pandas 函数对记录进行编号。这是代码df1.head()df1.head 语句的输出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)一旦我执行这个语句,它就会抛出一个错误此代码来自 Python 3 版本。正常的 SQL 查询可以工作,但 Python 不可用/不支持此 row_number 函数。你能帮我解决这个问题吗?我收到一个操作错误
2 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
问题很简单,你可能已经想通了。# 打破了整个事情,因为这是一个无法识别的标记。
如果您忽略这一点,您的代码应该可以工作。
from pandasql import sqldf
q1='select beef, veal, ROW_NUMBER() OVER (ORDER BY date ASC) as RN FROM df1'
df_new=sqldf(q1)
此外,将标头命名为与基本语法不同的名称也是一个好习惯。日期和行可以是 SQL 中的函数,因此您最好使用 'RN' 表示行列,使用 'date_' 或 'date_of_purchase' 表示日期。
12345678_0001
TA贡献1802条经验 获得超5个赞
您可以使用以下两行代码在 Pandas 中实现相同的功能:
按日期对数据框进行排序
>>>df1.sort_values(by='date')
添加名为“Row#”的附加列
>>>df1["Row#"]=range(1,len(df1["date"])+1)
添加回答
举报
0/150
提交
取消