将函数应用于数据框

apply a function to dataframe

我刚开始使用申请:

import pandas
df=pandas.DataFrame({"k1":['2017-03-07','2017-02-07','2017-01-15'],
                 "k2":[1,2,3],})

我想获取匹配某月的数据。例如:我想得到月份 == 2:

df[pandas.to_datetime(df.k1).dt.month == 2]

但是我想写一个函数,有一个参数可以匹配月份。 这是我的职能。没用。

def get_month(df, mon=1):
    return df[pandas.to_datetime(df.k1).dt.month == mon]

df.apply(get_month)

您需要稍微重构一下代码。 apply 每行工作。

代码:

def get_month(mon):
    return lambda x: pandas.to_datetime(x.k1).month == mon

测试代码:

df = pandas.DataFrame({"k1": ['2017-03-07', '2017-02-07', '2017-01-15'],
                       "k2": [1, 2, 3], })

print(df[df.apply(get_month(1), axis=1)])

结果:

           k1  k2
2  2017-01-15   3