将函数应用于数据帧

时间:2017-03-13 03:55:14

标签: python pandas apply

我刚才使用apply:

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)

1 个答案:

答案 0 :(得分:1)

您需要稍微重新构建代码。 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