Python 将对象转换为无时间的日期时间

Python 将对象转换为无时间的日期时间,python,pandas,datetime,Python,Pandas,Datetime,我的dataframe如下所示: Date Region Data 0 200201 A 8.8 1 200201 B 14.3 ... 1545 202005 C 7.3 1546 202005 D 131 我想将日期列(数据类型:object)转换为无时间的日期时间索

我的dataframe如下所示:

         Date      Region     Data
   0   200201        A        8.8
   1   200201        B        14.3
                    ...     
1545   202005        C        7.3
1546   202005        D        131
我想将日期列(数据类型:object)转换为无时间的日期时间索引。yyyymm或yyyymmdd或yyyy-mm-dd只要我能擦除时间部分,所有这些都不重要

我搜索了stackoverflow并尝试了这些代码

# (1) 
df["Date"] = pd.to_datetime(df["Date"], format = "%Y%m", errors = "coerce", uts = False)
# (2)
df["Date"] = pd.to_datetime(df["Date"], format = "%Y%m")
df["Date"] = df["Date"].dt.normalize()
# (3)
df["Date"] = pd.to_datetime(df["Date"], format = "%Y%m")
df["Date"] = df["Date"].dt.date
对于(1)和(2),我得到时间为yyyy-mm-dd 00:00:00的[“日期”]

对于(3),我得到的[“Date”]是yyyymm,但数据类型是object

我不能使用日期范围,因为同一日期重复了一段时间

有没有办法在python中将yyyymm[object]转换为yyyymmdd[datetime]呢


提前感谢。

这可能是关于数据帧在编辑器中的显示方式的显示配置问题。以正确格式获取数据的最简单方法是:

df['Date']=pd.to_datetime(df['Date'],格式=“%Y%m”)
下面是使用DataFrame和此代码得到的结果。日期格式正确,没有时间组件,并且具有正确的数据类型

        Date Region  Data
0 2002-01-01      A   8.8

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   Date    1 non-null      datetime64[ns]
 1   Region  1 non-null      object        
 2   Data    1 non-null      float64       
dtypes: datetime64[ns](1), float64(1), object(1)
memory usage: 152.0+ bytes
最终显示和数据类型相同

        Date Region  Data
0 2002-01-01      A   8.8

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   Date    1 non-null      datetime64[ns]
 1   Region  1 non-null      object        
 2   Data    1 non-null      float64       
dtypes: datetime64[ns](1), float64(1), object(1)
memory usage: 152.0+ bytes
日期区域数据
0 2002-01-01 A 8.8
范围索引:1个条目,0到0
数据列(共3列):
#列非空计数数据类型
---  ------  --------------  -----         
0日期1非空datetime64[ns]
1区域1非空对象
2数据1非空浮点64
数据类型:datetime64[ns](1)、float64(1)、object(1)
内存使用:152.0+字节

问题中的日期列的格式为YYYYMM(但没有日期)。函数
pd.to\u datetime()
隐式地将日期设置为1

函数
pd.Period()。请注意,df['Date']可以是字符串或6位整数

df['Date'].apply(lambda x: pd.Period(x, freq='M'))

0    2002-01
1    2002-01
2    2020-05
3    2020-05
Name: Date, dtype: period[M]

欢迎来到SO!如果你将程序的输出作为文本插入到问题中,而不是链接屏幕截图,通常会更好。有关更多信息,请查看“我的系统”中的“命令正在运行”correctly@a.deshpande012好的,谢谢你的提示@大赏金我想我的spyder程序有问题。谢谢谢谢,我想我的spyder有点问题。我在colab中尝试了相同的代码,它以yyyy-mm-dd格式显示。非常感谢您的帮助和出色的解释。我真的很感激。谢谢你的帮助!我真的很感激!