Python Dataframe:如果日期在其他两个日期列之间,则创建新列并设置为 1

Posted

技术标签:

【中文标题】Python Dataframe:如果日期在其他两个日期列之间,则创建新列并设置为 1【英文标题】:Python Dataframe: If Date is Between Two Other Date Columns, Create New Column and Set Equal to 1 【发布时间】:2017-12-12 23:58:59 【问题描述】:

我想在 python 数据框中实现以下逻辑:

    如果 Date 列介于 StartDate 和 EndDate 列之间,则: 创建一个新列并将其设置为 1(浮点型),否则设置为 0

我的日期列已经全部转换为日期时间

我尝试使用 IntervalIndex 和映射的复杂方法 dong this:

df_EVENT5_16['PIT_FS'] = 1  

df_temp = df_EVENT5_16.filter(['PIT_FS', 'StartDate', 'EndDate'], axis =1)  

del df_EVENT5_16['PIT_FS']

s = pd.Series(df_temp['PIT_FS'].values, pd.IntervalIndex.from_arrays(df_temp['StartDate'], df_temp['EndDate']))

df_EVENT5_16['PIT_FS'] = df_EVENT5_16['DTIN'].map(s)

但上述尝试给了我以下错误:ValueError: cannot handle non-unique indices

是否有更简单/更直接的方法来编写我所追求的逻辑?

【问题讨论】:

【参考方案1】:
def PIT_fleetsize(df):

        if  df['StartDate'] < df['DTIN'] < df['EndDate']:  
            val = 1
        else:
            val = 0

        return val

    df_EVENT5_16['Point In Time Fleet Size'] = df_EVENT5_16.apply(PIT_fleetsize, axis =1)

【讨论】:

不正确的代码缩进不是有效的 Python 代码。

以上是关于Python Dataframe:如果日期在其他两个日期列之间,则创建新列并设置为 1的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 在日期末尾添加一年

在 DataFrame 中获取上一个工作日

填写两组缺失的日期并将数据转换为 Spark dataFrame 中的每周

python 在Pandas DataFrame中查找连续日期组

在特定日期循环 Dataframe Pandas Python

Python——DataFrame转list(包含两种)