首页 > 解决方案 > 比较日期并根据此条件填充新列

问题描述

我想检查一个日期是否在另外两个日期之间(同一行中的所有日期)。如果这是真的,我希望一个新的列填充同一张表的销售值。如果不是,则应删除该行。

代码应遍历整个数据帧。

这是我的代码:

for row in final:
x = 0
if pd.to_datetime(final['start_date'].iloc[x]) < pd.to_datetime(final['purchase_date'].iloc[x]) < pd.to_datetime(final['end_date'].iloc[x]):
    final['new_col'].iloc[x] = final['sales'].iloc[x]
else:
    final.drop(final.iloc[x])
x = x + 1
print(final['new_col'])

final[sales]而不是我刚刚0回来的价值观。有谁知道错误在哪里或任何其他有效的方法来解决这个问题?

DataFrame 如下所示:

在此处输入图像描述

标签: pythondatabasepandas

解决方案


我会做这样的事情:

首先,创建新列:

import numpy as np
final['new_col'] = np.where(pd.to_datetime(final['start_date'])<(pd.to_datetime(final['purchase_date']), final['sales'], np.NaN)

然后,您只需删除 Na 的:

final.dropna(inplace=True)

推荐阅读