在 DataFrame 中,我创建了一个 Month 列,其中我从另一个格式为 2015.06.12 的列中获取了月份的编号。从.06。删除,我已将其转换为带有以下内容的数字:
str.extract('(\.\d{2}\.)')
我已经像这样删除了冒号:
str.extract('(\d{2})')
现在我想做的是将这些数字更改为相应的月份。我已经看到可以使用日历模块来做到这一点,我试图这样做:
def month(x):
return calendar.month_name[x]
df['Month'] = df.Month.apply(month)
但我收到错误:“列表索引必须是整数或切片,而不是浮点数”
还说有 NaN 细胞,原则上我想让它们像这样。
有什么建议我该怎么做?
谢谢!
NaN
问题是我认为你怀疑的价值观。NaN
实际上表示为浮点数,因此将其用作calendar.month_name
. 实际上,带有 的列NaN
不能在int
不丢失 的情况下转换为NaN
。你可以用不同的方式处理它,按照你的推理,一个非常简单的方法是检查函数是否接收到的 value (
x
) 是 valueNaN
。一个可重现的例子:但是,我不会对正则表达式变得如此复杂,并且
calendar
原则上您可以通过将带有日期的字符串转换为类型DateTime
并使用以下方法以矢量化方式对 pandas 进行此操作pandas.Series.dt.month_name
:我不知道您希望月份名称使用哪种语言,但您可以通过使用参数指定您想要的语言环境来更改它
locale
。默认为en_US
。