系列的真值是模棱两可的 - 将系列月份名称转换为月份数量

时间:2018-03-05 23:02:18

标签: python pandas

我的数据框中有一列df['Month'],其中包含月份名称:1月,2月等。

我想将这些转换为月号:1,2等等。

在我的Pandas中,df['Month_Num'] = list(cal.month_abbr).index(df['Month'])抛出错误:

  

系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

熊猫:

import pandas as pd
import calendar as cal

df['Day'] = 1
# convert 'January' to 1
df['Month_Num'] = list(cal.month_abbr).index(df['Month'])
df['date_tw'] = ''
# Create date_time based on format `mm/dd/yy`:
df['date_tw'] = pd.to_datetime(df[['Month_Num', 'Day', 'Year']])

result_df = df

为什么会这样?我可以在其上找到的唯一数据是from here与比较运算符相关,我没有使用它。

1 个答案:

答案 0 :(得分:1)

尝试使用map / replace代替稍微不同的方法;

mapping = {v : k for k, v in enumerate(cal.month_abbr)}
df['Month_Num'] = df['Month'].map(mapping)   

对于包含完整月份名称的列,请改用cal.month_name