在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 中),但没有时间戳
在 PySpark 中将 Python Dict 转换为稀疏 RDD 或 DF