Python 如何使用带越界日期时间的熊猫数据帧?

Python 如何使用带越界日期时间的熊猫数据帧?,python,pandas,python-datetime,Python,Pandas,Python Datetime,我有这样一个数据帧: housing_deals.head() Out[2]: price sale_date 0 477,000,000 1396/10/30 1 608,700,000 1396/11/25 2 580,000,000 1396/10/03 3 350,000,000 1396/12/05 4 328,000,000 1396/03/18 如何将sale_date列转换为pandas datetime 我看下面 但对

我有这样一个数据帧:

housing_deals.head()
Out[2]: 
         price   sale_date 
0  477,000,000  1396/10/30 
1  608,700,000  1396/11/25 
2  580,000,000  1396/10/03 
3  350,000,000  1396/12/05 
4  328,000,000  1396/03/18 
如何将sale_date列转换为pandas datetime
我看下面


但对于我的数据帧,我无法做到这一点。您可以将值转换为日周期,请检查:

编辑:您可以将值转换为数字,然后将函数用于:


您可以将值转换为每日时段,请选中:

编辑:您可以将值转换为数字,然后将函数用于:


它给了我一个错误:day超出了月份的范围,因为我的数据框中的day值为31。我如何处理这个问题@jezrael@saeedzali-您的熊猫版本是什么?它是“1.0.5”@jezrael@saeedzali-问题在于数据
住房交易头()
?所有的数据?这意味着使用
df['sale_date'].head().apply(λx:pd.Period(x,freq='D'))
而不是
df['sale_date'].apply(λx:pd.Period(x,freq='D'))
?是的@jezraelit给了我这个错误:日期超出了月份的范围,因为我的数据框中有值为31的日期。我如何处理这个问题@jezrael@saeedzali-您的熊猫版本是什么?它是“1.0.5”@jezrael@saeedzali-问题在于数据
住房交易头()
?所有的数据?这意味着使用
df['sale\u date'].head().apply(lambda x:pd.Period(x,freq='D'))
而不是
df['sale\u date'].apply(lambda x:pd.Period(x,freq='D'))
?是的,它是@jezrael
df['sale_date'] = df['sale_date'].apply(lambda x: pd.Period(x, freq='D'))
print (df)
         price   sale_date
0  477,000,000  1396-10-30
1  608,700,000  1396-11-25
2  580,000,000  1396-10-03
3  350,000,000  1396-12-05
4  328,000,000  1396-03-18
print (df['sale_date'].str.replace('/','').astype(int))
0    13961030
1    13961125
2    13961003
3    13961205
4    13960318
Name: sale_date, dtype: int32


def conv(x):
    return pd.Period(year=x // 10000,
                     month=x // 100 % 100,
                     day=x % 100, freq='D')
  

df['sale_date'] = df['sale_date'].str.replace('/','').astype(int).apply(conv)
print (df)

         price   sale_date
0  477,000,000  1396-10-30
1  608,700,000  1396-11-25
2  580,000,000  1396-10-03
3  350,000,000  1396-12-05
4  328,000,000  1396-03-18