为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python Pandas 中实现 SQL Row_number?

如何在 Python Pandas 中实现 SQL Row_number?

梵蒂冈之花 2021-09-24 14:38:10
我正在尝试使用 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' 表示日期。


查看完整回答
反对 回复 2021-09-24
?
12345678_0001

TA贡献1802条经验 获得超5个赞

您可以使用以下两行代码在 Pandas 中实现相同的功能:

  1. 按日期对数据框进行排序

    >>>df1.sort_values(by='date')
  2. 添加名为“Row#”的附加列

    >>>df1["Row#"]=range(1,len(df1["date"])+1)


查看完整回答
反对 回复 2021-09-24
  • 2 回答
  • 0 关注
  • 405 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信