Python:将函数应用于数据帧列并将结果放到另一列
问题描述:
嗨,我想应用一个函数,如下面的函数将日期分隔为几个月和几年。我也想将这些结果导出到另一个名为'month'和'year'的列。第二部分是我遇到的问题,即将结果导出到另一列的行。谢谢。Python:将函数应用于数据帧列并将结果放到另一列
'Full Date' 'Month' 'Year'
07/31/2016 07 2016
05/28/2011 05 2011
答
更详细的方法:
df = pd.DataFrame({'Full Date': ['07/31/2016','05/28/2011']})
def date_breaker(date):
year = date[-4:]
month = date[:2]
return (year,month)
x = df['Full Date'].map(lambda x: date_breaker(x))
df['year'],df['month'] = zip(*x)
答
假设FullDate
列是datetime
D型的:
In [119]: df['Month'] = df['FullDate'].dt.month
In [120]: df['Year'] = df['FullDate'].dt.year
In [121]: df
Out[121]:
FullDate Month Year
0 2016-07-31 7 2016
1 2011-05-28 5 2011
如果它是一个string
(object
):
In [133]: df[['Month','Year']] = df['FullDate'].str.split('/', expand=True).loc[:, [0,2]]
In [134]: df
Out[134]:
FullDate Month Year
0 07/31/2016 07 2016
1 05/28/2011 05 2011
答
另一种方式,你可以做到这一点:
df = pd.DataFrame({'FullDate': ['07/31/2016','05/28/2011']})
df['Month'] = df['FullDate'].apply(lambda x: x.split('/')[0])
df['Year'] = df['FullDate'].apply(lambda x: x.split('/')[2])