如何编写代码构造作为函数

时间:2016-08-04 19:26:12

标签: python python-2.7 function pandas split-apply-combine

我是编程和python的新手,并希望使用' def'将以下代码编写为函数。 '回归'构造:

df.loc[df['DATE_INT'].shift(-1) - df['DATE_INT'] == 1, 'CONSECUTIVE_DAY'] = True
df.loc[(df['DATE_INT'].shift(-1) - df['DATE_INT'] == 1) | (df['DATE_INT'].shift(1) - df['DATE_INT'] == -1), 'CONSECUTIVE_DAY'] = True

我的尝试返回无效语法:

def ConsecutiveID(df, column ='DATE_INT'):
    return  df.loc[df['DATE_INT'].shift(-1) - df['DATE_INT'] == 1, 'CONSECUTIVE_DAY'] = True
            df.loc[(df['DATE_INT'].shift(-1) - df['DATE_INT'] == 1) | (df['DATE_INT'].shift(1) - df['DATE_INT'] == -1), 'CONSECUTIVE_DAY'] = True

我的目标是最终使用我的ConsecutiveID函数,如下所示:

    df.groupby(['COUNTY_GEOID_YEAR','TEMPBIN']).apply(ConsecutiveID)

我正在应用split-apply-combine构造。 groupby分割我的数据,我使用我想在apply中构造的函数。

我的主要问题是如何将我称之为ConsecutiveID的函数编写为函数。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

def ConsecutiveID(df):
    df = df.copy()
    cond1 = df['DATE_INT'].shift(-1) - df['DATE_INT'] == 1
    cond2 = df['DATE_INT'].shift(1) - df['DATE_INT'] == -1

    df.loc[cond1 | cond2, 'CONSECUTIVE_DAY'] = True

    return df