s900n
s900n

Reputation: 3375

Python: Apply a function to a dataframe column and put the result to another column

Hi I want to apply a function such as below which is separating dates to months and years. I also want to export these results to another column which is named 'month' and 'year' The second part is where I have problem which is exporting the results to another column's row. Thanks.

'Full Date' 'Month'  'Year'

07/31/2016    07      2016
05/28/2011    05      2011

Upvotes: 1

Views: 102

Answers (3)

Siddhant
Siddhant

Reputation: 76

A more detailed approach:

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)

Upvotes: 1

zipa
zipa

Reputation: 27869

Another way you can do it:

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])

Upvotes: 2

MaxU - stand with Ukraine
MaxU - stand with Ukraine

Reputation: 210842

Assuming the FullDate columns is of datetime dtype:

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

If it's a 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

Upvotes: 3

Related Questions