我正在尝试将熊猫数据栏的数据类型从string更改为datetype。我要求的格式是元年(如:1月-2018年)。我试过:
dataframe['date_col'] = pd.to_datetime(dataframe['date_col'], format='%b-%Y')我收到了以下警告,我得到的输出是类似于(2018-01-01)格式的年度月日格式。
main:1: SettingWithCopyWarning:值试图在来自DataFrame的片的副本上设置。尝试使用.locrow_indexer,col_indexer = value代替 请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
如何获得我想要的输出格式,即1月-2018年。
发布于 2018-10-14 12:10:50
datetime值不作为字符串存储!
它们在内部存储为整数,必须是完整的:例如,datetime值必须包括日期、月份和年份。因此,您必须选择如下之一:
datetime dtype存储您的系列,并查看默认表示形式,即在显示或打印该系列时使用2018-01-01。object dtype存储您的系列,并选择您选择的表示形式。没有的“中介”选项来获得这两个世界的最佳效果。
datetime 选项1:
只需像现在一样使用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]object 选项2:
好吧,这正是你的输入。什么都不做。您的输入格式'%b-%Y'已经在表单'Jan-2018'中。
关于SettingWithCopyWarning的注记
此警告与pd.to_datetime无关。很可能,您的dataframe是另一个数据帧的一个友好的部分,因此Pandas显示了一个警告,如果不显式复制数据,您可能会看到意外的结果。另见How to deal with SettingWithCopyWarning in Pandas?
https://stackoverflow.com/questions/52800107
复制相似问题