【发布时间】:2016-08-01 19:45:25
【问题描述】:
我的数据框中有多个日期时间列,当我将日期时间导出到 csv 时,我需要将日期时间从月/日/年转换为月/年。可以这样做吗?
我正在尝试这个:
if date_mask == "MMM":
df[name].apply(lambda x: x.strftime('%b %Y'))
else:
df[name].apply(lambda x: x.strftime('%m %Y'))
当我查看导出的 CSV 时,我仍然看到旧的日期时间值。
关于如何做到这一点的任何想法?
谢谢
############################################ ##############
解决方案
def modify_date(x):
try:
if pd.isnull(x) == False:
return x.strftime('%b %Y')
else:
print pd.NaT
except:
return pd.NaT
df = pd.DateFrame.from_records(<some list from database>)
df[name] = df[name].apply(modify_date)
感谢大家的帮助!
【问题讨论】:
-
将其分配回
df[name]:df[name] = df[name].apply(lambda x: x.strftime('%m %Y')) -
您需要分配
apply方法的结果,因为它不会就地修改DataFrame。 -
@bernie 我试试看!
-
您使用哪个应用程序查看 csv 文件(例如 Excel)?是原始 CSV 文件,还是日期解析版本?
-
@bernie 当列值为 NaT (null) 时,它似乎失败了。
标签: python csv datetime pandas