簡體   English   中英

Pandas dataframe timedelta 給出異常

[英]Pandas dataframe timedelta is giving exceptions

我正在嘗試根據 dataframe 中的 billDate 獲取下個月的第一個日期。

我這樣做了:

import pandas as pd
import datetime
from datetime import timedelta
dt = pd.to_datetime('15/4/2019', errors='coerce')
print(dt)
print((dt.replace(day=1) + datetime.timedelta(days=32)).replace(day=1))

它運行良好,output 是:

2019-04-15 00:00:00
2019-05-01 00:00:00

現在,我在以下代碼中的 dataframe 中應用相同的邏輯

df[comNewColName] = (pd.to_datetime(df['billDate'], errors='coerce').replace(day=1) + datetime.timedelta(days=32)).replace(day=1)

但是我收到這樣的錯誤:

---> 69                 df[comNewColName] = (pd.to_datetime(df['billDate'], errors='coerce').replace(day=1) + datetime.timedelta(days=32)).replace(day=1)
     70                 '''print(df[['billDate']])'''
     71                 '''df = df.assign(Product=lambda x: (x['Field_1'] * x['Field_2'] * x['Field_3']))'''

TypeError: replace() 得到了一個意外的關鍵字參數 'day'

您可以將Series.to_period用於月份期間,為下個月加1 ,然后通過Series.dt.to_timestamp轉換回日期時間:

print (df)
    billDate
0  15/4/2019
1  30/4/2019
2  15/8/2019

df['billDate'] = (pd.to_datetime(df['billDate'], errors='coerce', dayfirst=True)
                   .dt.to_period('m')
                   .add(1)
                   .dt.to_timestamp())
print (df)
    billDate
0 2019-05-01
1 2019-05-01
2 2019-09-01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM