【发布时间】:2019-07-31 18:03:33
【问题描述】:
我是 python 新手(2 周经验)
无法给出具体信息。因为工作时数据和代码都在我的电脑上。
我在 python/pandas 中处理日期操作并想使用以下逻辑操作:
如果 date1 > 2019-7-31 然后在 var1 中写入 1
反之写 0
我还想比较列:
如果 date2 > date1 然后在 var2 中写入 1
反之写 0
表1
ID date1 date2
1 2019-10-1 2019-7-2
2 2019-7-30 2019-10-10
.
.
40000
表 2
ID date1 date2 var1 var2
1 2019-10-1 2019-7-2 1 0
2 2019-7-30 2019-10-10 0 1
.
.
40000
用 date.time 做实验 许多其他建议仅适用于变量,但不适用于列。
df.loc[df["date2"] > "date1", "date2"] = 1
-> 失败,因为 date1 被读取为字符串
df.loc[df["date1"] > 2019-7-3, "date2"] = 1
df.loc[df["date1"] > date.time[2019-7-3], "date2"] = 1
-> 无法找出正确的语法,因此2019-7-31 被读取为日期并且可比较。
在 python/pandas 中是否有办法将日期转换为 1900 日期系统?
所以2019-7-31 = 43677 = Year1900+Days43677.
这将解决日期处理的所有问题。因为您可以轻松比较数字。
当然,我想将 43677 重新转换为实际日期。
【问题讨论】:
-
pd.to_datetime? -
您几乎可以使用 pandas 日期时间功能 here is the documentation 来完成您想做的任何事情。你可以convert to datetimes 和
pd.to_datetime() -
就像我说的,我已经使用过 date.time,但在文档中找不到任何相关的案例。我看到了许多转换日期的方法,但没有看到如何实际使用它们进行计算。特别是如果您想比较列
-
@MartinFlower 查看我提供的将字符串转换为日期时间、比较列并有条件地创建列的解决方案。