如何格式化Jan2018,即如何获得python中的monyear格式

2024-06-23 19:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将pandas数据帧中列的数据类型从string更改为datetype。我要求的格式是周一(例如:2018年1月)。我试过:

dataframe['date_col'] = pd.to_datetime(dataframe['date_col'], format='%b-%Y')

我收到了以下警告,我得到的输出格式是year-month-day类似(2018-01-01)。在

main:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

如何得到我想要的输出格式,是2018年1月。在


Tags: theto数据dataframepandasdatestringvalue
1条回答
网友
1楼 · 发布于 2024-06-23 19:59:22

datetime值不是作为字符串存储的!

它们在内部以整数形式存储,必须是完整的:例如,datetime值必须包含日、月和年。因此,您必须选择以下选项之一:

  1. 使用datetimedtype存储序列,并在显示或打印序列时查看默认表示形式,即2018-01-01。在
  2. 使用objectdtype存储序列并选择所选的表示形式。在

没有的“中间人”选择,可以两全其美。在

选项1:datetime

使用pd.to_datetime就可以了。下面是一个演示:

df = pd.DataFrame({'date_col': ['Jan-2018', 'Oct-2018', 'Dec-2018']})

df['date_col'] = pd.to_datetime(df['date_col'], format='%b-%Y')

print(df, df['date_col'].dtype)

    date_col
0 2018-01-01
1 2018-10-01
2 2018-12-01 datetime64[ns]

{>

好吧,这正是你的输入。什么都不做。您的输入格式'%b-%Y'已经是'Jan-2018'的格式。在

关于使用copywarning进行设置的注意事项

此警告与pd.to_datetime无关。很可能您的dataframe是另一个数据帧的一个非正常片段,因此Pandas显示一个警告,如果您不显式地复制一个数据帧,您可能会看到意外的结果。另请参见How to deal with SettingWithCopyWarning in Pandas?

相关问题 更多 >

    热门问题