在python pandas df中将月份数转换为名称

Posted

技术标签:

【中文标题】在python pandas df中将月份数转换为名称【英文标题】:Convert month number to name in python pandas df 【发布时间】:2018-12-16 08:25:50 【问题描述】:

我在 pandas 数据框中有一个日期列,我需要将月份数字转换为名称:

Date
01-01-2018, 
02-02-2018,
03-04-2018.

01-JAN-2018,
02-Feb-2018,
03-April-2018

【问题讨论】:

重复问题:请参考Docs 以下解决方案之一有帮助吗?随意接受一个(左侧的绿色勾号),或要求澄清。 这能回答你的问题吗? python/pandas: convert month int to month name 【参考方案1】:

您可以通过将列解析为日期时间,然后修改字符串表示,然后再将其转换回字符串来实现:

from datetime import datetime
import pandas as pd

d = "date": ["01-01-2018", "02-02-2018", "03-04-2018"]
df = pd.DataFrame(data=d)

# %M = 01, %b = Jan, "%b".upper() = JAN
df.date = df.date.apply(lambda x: datetime.strptime(x, "%d-%M-%Y"))
df.date = df.date.apply(lambda x: datetime.strftime(x, "%d-%b-%Y").upper())

print(df)

          date
0  01-JAN-2018
1  02-JAN-2018
2  03-JAN-2018

【讨论】:

【参考方案2】:

您可以使用pd.Series.dt.strftime

Python's strftime directives 是构造datetime 字符串格式的有用资源。

import pandas as pd
from io import StringIO

mystr = StringIO("""Date
01-01-2018 
02-02-2018
03-04-2018""")

# if necessary, read data and convert to datetime
df = pd.read_csv(mystr)
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

# apply string formatting
df['Date'] = df['Date'].dt.strftime('%d-%b-%Y')

print(df)

          Date
0  01-Jan-2018
1  02-Feb-2018
2  03-Apr-2018

【讨论】:

以上是关于在python pandas df中将月份数转换为名称的主要内容,如果未能解决你的问题,请参考以下文章

在 Pandas 中将字符串列转换为日期的有效方法(在 Python 中),但没有时间戳

在pandas python中将指数或科学数转换为整数

在 PySpark 中将 Python Dict 转换为稀疏 RDD 或 DF

在 Excel 中将月份数从完整日期单元格转换为文本月份

python - 如何将带有年份的周数转换为python pandas中的日期时间格式?

在 Python 中将年份转换为 12/31/xxxx 格式