当前位置: 首页 > 知识库问答 >
问题:

函数将不应用于数据帧,获取语法错误

常雪风
2023-03-14

我试图将此函数应用于pandas数据帧,以查看出租车上下车时间是否在我使用下面的arrivemin、ArriveMax变量创建的范围内。

如果时间真的在这个范围内,我想保留这一行。如果超出范围,我想从数据帧中删除它。

开始。时间,结束。时间等都是日期时间对象,所以时间功能应该工作正常。

def time_function(df, row):
    gametimestart = df['Start.Time'] 
    gametimeend = df['End.Time'] 
    arrivemin = gametimestart - datetime.timedelta(minutes=120) 
    arrivemax = gametimeend - datetime.timedelta(minutes = 30) 
    departmin = gametimeend - datetime.timedelta(minutes = 60) 
    departmax = gametimeend + datetime.timedelta(minutes = 90)
    for not i in ((df['pickup_datetime'] > arrivemin) & (df['pickupdatetime'] < arrivemax) &(df['dropoff_datetime'] > departmin) & (df['dropoffdatetime'] < departmax)):
        df = df.drop[df[i.index]]
    return


for index, row in yankdf:
    time_function(yankdf, row)

继续获取此语法错误:

 File "<ipython-input-25-bda6fb2db429>", line 17
    for not i in (((row['pickup_datetime'] > arrivemin) & (row['pickupdatetime'] < arrivemax)) | ((row['dropoff_datetime'] > departmin) & (row['dropoffdatetime'] < departmax)):
          ^
SyntaxError: invalid syntax

共有1个答案

劳韬
2023-03-14

我认为你不需要这个功能。只需执行一个基本子集,df_filtered应该是您的过滤数据帧。

gametimestart = df['Start.Time'] 
gametimeend = df['End.Time'] 
arrivemin = gametimestart - datetime.timedelta(minutes=120) 
arrivemax = gametimeend - datetime.timedelta(minutes = 30) 
departmin = gametimeend - datetime.timedelta(minutes = 60) 
departmax = gametimeend + datetime.timedelta(minutes = 90)
df_filtered = df[(df['pickup_datetime'] > arrivemin) &
                 (df['pickup_datetime'] < arrivemax) &
                 (df['dropoff_datetime'] > departmin) & 
                 (df['dropoffdatetime'] < departmax)]
 类似资料:
  • 我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。 然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“col_1”和“col_2”中给出。 最后一个命令以错误结束: 谢谢你的

  • 并将其应用于数据表的一列--这是我希望这样做的: 我还没有找到任何简单的方法,正在努力找出如何做到这一点。一定有一个更简单的方法,比将数据rame转换为和RDD,然后从RDD中选择行来获得正确的字段,并将函数映射到所有的值,是吗?创建一个SQL表,然后用一个sparkSQL UDF来完成这个任务,这更简洁吗?

  • 我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误:

  • 如果之前已经解决了这个问题,请提前道歉,但我已经尝试过浏览所有与ddply、sApplication和Application相关的问题,但我一生都无法解决这个问题... 我已经编写了一个函数CountMonths,它将计费周期中的日、月和总天数作为参数,并返回计费周期中的日历月数: 我想将此函数应用于包含客户账单记录的data.frame中的每一行,例如。 我尝试了几种选择,但没有一种效果好。具体

  • 怎么办? **添加详细示例如下***

  • 我有这个数据框 我想把它转换成 我知道如何创建一个数据框(与索引)为1列,但不是为多个列 此代码产生此结果 如何修改上面的代码以添加col2(理想情况下使用矢量化而不是迭代)(因此理想情况下我不希望为每一列输入相同的代码)