Pandas添加一个新列,其值取决于特定条件

时间:2018-02-12 05:16:17

标签: python pandas

我的数据框有一个名为'Date的列;包含月/日/年('01 / 01/2018')格式的日期。我想创建一个名为'Month'的新列,它将包含月份的名称,在本例中为1月。 显然我想每个月都这样做。

例如:

   Date         Month
0  01/01/2018   January
1  02/03/2018   February
2  04/08/2018   April

我该怎么办? 谢谢

2 个答案:

答案 0 :(得分:1)

我假设df中的'Date'是string,因此需要转换。 如果不是,您需要相应调整。

尝试以下

from datetime import date,datetime  #date needed for simulation.
import pandas as pd


l = ['01/01/2018','02/03/2018','04/08/2018']  
df = pd.DataFrame({'Date':l})

df['Month']=df['Date'].apply(lambda x :datetime.strptime(x, '%m/%d/%Y').strftime('%B'))

<强>结果

>>> df
         Date     Month
0  01/01/2018   January
1  02/03/2018  February
2  04/08/2018     April
>>> 

答案 1 :(得分:0)

以下是解决问题的简单方法:

<强>代码

import calendar
import pandas as pd
d = {'Date':['01/01/2018', '02/03/2018', '04/08/2018']}
df1 = pd.DataFrame(d)
df1['Month'] = pd.DatetimeIndex(df1['Date']).month
df1['Month'] = df1['Month'].apply(lambda x: calendar.month_name[x])
print(df1)

执行此代码后,您将得到所需的结果:

<强>结果

         Date      Month
0  01/01/2018    January
1  02/03/2018   February
2  04/08/2018      April