【问题标题】:function won't apply to pandas data frame, getting syntax error函数不适用于 pandas 数据框,出现语法错误
【发布时间】:2016-02-23 08:14:28
【问题描述】:

我正在尝试将此函数应用于 pandas 数据框,以查看出租车上车或下车时间是否在我使用下面的到达最小值创建的范围内,到达最大值变量。

如果时间确实在范围内,我想保留该行。如果超出范围,我想将其从数据框中删除。

Start.Time、End.Time 等都是日期时间对象,因此时间功能应该可以正常工作。

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

【问题讨论】:

  • 好吧,你的缩进对于 time_function 的主体是错误的。会这样吗?
  • 哎呀...这只是一个复制粘贴错误。以上编辑
  • edit您的问题并包括完整的错误回溯。
  • 有趣...我的错误信息在重复的行上,看来错误是“not”而不是departmin

标签: python pandas dataframe


【解决方案1】:

我认为您不需要该功能。只需执行一个基本子集,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)]

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2017-04-01
    • 2015-08-22
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多