首页 > 解决方案 > 在 pandas 中使用 lambda 调用另一列

问题描述

我正在检查NYC MVA数据集。我通过组合和重写了该CRASH TIME专栏:CRASH DATECRASH 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

我现在打算将此函数应用于数据集,创建名为SUNRISEand的新列SUNSET。我试图用以下方法做到这一点apply()

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

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

标签: pythonpandaslambdaapply

解决方案


推荐阅读