如何格式化2018年1月的格式,即如何获取python的星期一格式

时间:2018-10-14 06:35:15

标签: python pandas datetime date-format

我正在尝试将pandas数据框中的列的数据类型从字符串更改为datetype。我需要的格式是“每年一月”(例如:2018年1月)。我尝试过:

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

我收到以下警告,并且输出的格式为年-月-日,类似于(2018-01-01)。

  

主要:1:SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值。尝试使用   .loc [row_indexer,col_indexer] =值

     

请参阅文档中的警告:   http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

如何获取我想要的输出格式,即2018年1月。

1 个答案:

答案 0 :(得分:0)

datetime值不存储为字符串!

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

  1. 使用datetime dtype存储系列,并在显示或打印系列时查看默认表示形式,即2018-01-01
  2. 使用object dtype存储系列,然后选择所需的表示形式。

没有没有的“中介”选项可以同时兼顾两个方面。

选项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]

选项2:object

好吧,这正是您输入的内容。没做什么。您的输入格式'%b-%Y'的格式为'Jan-2018'

关于SettingWithCopyWarning的说明

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