我在python和csv文件中得到零和负天数

2024-09-27 00:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以使用pandas库替换csv文件中的零和负天数,我只需要将任何负天数替换为零或三十天

这是我的样本:

import datetime
from dateutil.relativedelta import relativedelta
import pandas as pd
import numpy as np

df = pd.read_csv("csv_data.csv", encoding="UTF-8",
    parse_dates = [
        "firstdate",
        "lastdate",
    ], dayfirst=True
)
diff = pd.firstdate - pd.lastdate
#When i skip the following loop
"""for d in diff:
    if d < 0:
        df['thedif'] = 0
    else:
        df['thedif'] = diff"""
#and add this line below

  df['thedif'] = diff
index firstdate   lastdate   thedif
0     2021-03-02  2021-04-02 -31days
1     2021-04-02  2021-03-02 31days
2     2021-03-03  2021-03-03 0days

但是如果我们在numpy中使用where关键字,我们会得到

Invalid comparison between dtype=timedelta64[ns] and int

Tags: and文件csvimportnumpypandasdfas
1条回答
网友
1楼 · 发布于 2024-09-27 00:21:56

Tou可以通过^{}将天数转换为整数:

diff = (df.firstdate - df.lastdate).dt.days

df['thedif'] = np.where(diff < 0, 0, diff)

或者通过pd.Timedelta(0)进行比较:

diff = df.firstdate - df.lastdate

df['thedif'] = np.where(diff < pd.Timedelta(0), pd.Timedelta(0), diff)

相关问题 更多 >

    热门问题