python - 比较日期并根据此条件填充新列
问题描述
我想检查一个日期是否在另外两个日期之间(同一行中的所有日期)。如果这是真的,我希望一个新的列填充同一张表的销售值。如果不是,则应删除该行。
代码应遍历整个数据帧。
这是我的代码:
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 如下所示:
解决方案
我会做这样的事情:
首先,创建新列:
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)
推荐阅读
- java - 如何创建 Windows 可执行文件?
- java - 在 java 8 中流式传输时拆分逗号分隔的字符串值
- go - 中间件 HTTP 测试在不应该通过时通过
- python - Python 正则表达式搜索以无法处理带有编译模式的标志参数结束
- angular - 如何在不重新渲染组件的情况下重新应用属性绑定?
- reactjs - storybook.js,页面卡住加载,没有错误
- apache - 如何使 Icecast 音频流与所有浏览器兼容?
- javascript - 如何连续计算复选框(纯javascript)?
- gcc - GAS 组装:开关 - 默认情况下触发
- django - Django查询多对多字段