python - 日期偏移量取决于 pandas df 中的其他列
问题描述
嗨,我是从 R 切换 python 的新手,我很难完成这个非常简单的任务,即根据熊猫数据框的另一列更改日期。我阅读了其他几个关于此的问题,我希望有人可以快速解决我的问题,因为除了互联网我没有其他人可以问。
我想我拥有所有的成分(功能),但与我在 R 中习惯的相比,我真的很难使用 pandas df。
import datetime
from datetime import datetime
import pandas as pd
import numpy as np
today=pd.to_datetime(datetime.today().strftime('%Y-%m-%d'))
d={"Start_Date":[today,today]}
df=pd.DataFrame(data=d)
n=len(df)
df["Distance"]=np.round_(np.random.uniform(low=1, high=14, size=n)).astype(int)
df.loc[:,"FutureDate"]=""
for index, row in df.iterrows():
print(row["Start_Date"]+pd.DateOffset(row["Distance"]))
row["FutureDate"]=row["Start_Date"]+pd.DateOffset(row["Distance"])
如果打印语句有效,为什么我的 FutureDate 列是空的?有没有比使用循环更优雅的解决方案?我已经习惯了data.table
在一行中编写函数的地方。
解决方案
试试这个代码..它对我有用:
import datetime
from datetime import datetime
import pandas as pd
import numpy as np
today=pd.to_datetime(datetime.today().strftime('%Y-%m-%d'))
d={"Start_Date":[today,today]}
df=pd.DataFrame(data=d)
n=len(df)
df["Distance"]=np.round_(np.random.uniform(low=1, high=14, size=n)).astype(int)
df.loc[:,"FutureDate"]=""
for index, row in df.iterrows():
print(row["Start_Date"]+pd.DateOffset(row["Distance"]))
df.loc[index, "FutureDate"]=row["Start_Date"]+pd.DateOffset(row["Distance"])
事实上,我们需要为 df 本身的值分配正确的索引和列。
EDIT:
更优雅的方式:
import datetime
# from datetime import datetime
import pandas as pd
import numpy as np
today=pd.to_datetime(datetime.datetime.today().strftime('%Y-%m-%d'))
d={"Start_Date":[today,today]}
df=pd.DataFrame(data=d)
n=len(df)
df["Distance"]=np.round_(np.random.uniform(low=1, high=14, size=n)).astype(int)
df["FutureDate"]=df["Start_Date"] + pd.to_timedelta(df['Distance'],'d')
希望这可以帮助。
推荐阅读
- postgresql - 提高 Postgres 性能
- postgresql - 如何在 pgAdmin 4 中保存更改
- git - 使用辅助键推送到受邀回购
- xslt-1.0 - 如何为父、子和孙元素分配唯一的 id?
- mysql - 在popsql中,当我尝试多次运行时它说 - 表已经存在
- amazon-web-services - 更新 DynamoDB 表以通过 CloudFormation 反映新架构,而无需删除整个堆栈
- discord.py - 如何在 discord.py bot.command 中将用户调用命令作为默认参数传递?
- python - 从 Pyspark 中的嵌套 Json-String 列中提取模式
- javascript - 将枚举作为通用类型传递?
- amazon-cloudformation - 将不可导入的资源“导入”到 CloudFormation 堆栈中