映射与命名函数vs相同的lambda函数提供不同的响应,熊猫

时间:2018-02-27 21:31:36

标签: python pandas

我正在尝试应用一个简单的函数从pandas数据框中的字符串列中提取月份,其中字符串的格式为m / d / yyyy。

数据框称为数据,日期列称为交易日期,我的新建议月份列我希望调用交易月。

以下工作正常:

data['transaction month']=data['transaction date'].map(lambda x: x[0:x.index('/')])

但是,如果我尝试使用命名函数执行相同的操作,它只返回一个列,其中每个值都为None

def extract_month_from_date(date):
        return date[0:date.index('/')]

data['transaction month 2']=data['transaction date'].map(extract_month_from_date)

我盯着代码的时间足够长,以至于我觉得我疯了,

有什么不对

1 个答案:

答案 0 :(得分:0)

您可以通过pd.Series.dt.month提取月份:

import pandas as pd

df = pd.DataFrame({'date': ['8/2/2018']})
df['date'] = pd.to_datetime(df['date'])

df['month'] = df['date'].dt.month

#         date  month
# 0 2018-08-02      8