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的主要内容,如果未能解决你的问题,请参考以下文章
填写两组缺失的日期并将数据转换为 Spark dataFrame 中的每周
python 在Pandas DataFrame中查找连续日期组