在熊猫中使用lambda调用另一列

时间:2020-09-01 12:49:48

标签: python pandas lambda apply

我正在检查NYC MVA数据集。我通过结合CRASH TIMECRASH DATE重写了CRASH TIME列:

df['CRASH TIME'] = (df['CRASH DATE'] + ' ' + df['CRASH TIME']).apply(lambda x: dt.datetime.strptime(x, '%m/%d/%Y %H:%M'))
df = df.drop('CRASH DATE', axis=1)

我有一个字符串,其中包含来自日出/日落API的24小时数据。我正在尝试提取日出和日落数据并将其转换为日期时间对象。

我编写了一个函数来执行API调用:

def get_sunrise_sunset(sun, date):
    '''
    get sunrise/sunset information
    '''
    api_link = 'https://api.sunrise-sunset.org/json?lat=36.7201600&lng=-4.4203400&date={}'.format(date.strftime('%Y-%m-%d'))
    r = requests.get(api_link)
    time = r.json()['results'][sun][:-3]
    if sun == 'sunset':
        time = '1' + str(int(time[0])+2) + time[1:]
    dt_time = dt.datetime.strptime(time, '%H:%M:%S').time()
    return dt_time

我现在打算将此功能应用于数据集,创建名为SUNRISESUNSET的新列。我尝试使用以下apply()进行此操作:

df['SUNRISE'] = df.apply(lambda x: get_sunrise_sunset(sun='sunrise', date=x['CRASH TIME']), axis=1)

不幸的是,这似乎已停滞不前-我将其整夜运行,但12小时后仍未完成。我假设这是由于lambda-apply()的书写不正确造成的。我该如何正确实施呢?

0 个答案:

没有答案