python - 通过将整数添加到数据框中的日期时间来创建新列
问题描述
我有一个看起来像这样的日期框:
|Launch |Delivery |Step-up
0|2020-04-22 |102 |NaT
1|2020-09-02 |140 |2021-01-03
2|2019-12-24 |90 |2020-04-20
3|2020-06-14 |nan |2022-02-18
...
我想对这些列进行一些计算以创建一个名为成熟度的新列。
如果交付中有 nan,那么该行的到期时间也应该是 nan。
如果没有升级,那么成熟度 = 发布 + 交付。
如果确实存在升级并且它是<启动+交付,那么成熟度=升级。
否则成熟度是发布+交付。
所以理想情况下,数据框应该如下所示:
|Launch |Delivery |Step-up |Maturity
0|2020-04-22 |10 |NaT |2020-05-02
1|2020-09-02 |14 |2020-09-10 |2020-09-10
2|2019-12-24 |9 |2020-01-20 |2020-01-02
3|2020-06-14 |nan |2020-07-18 |nan
...
解决方案
你只需要迭代抛出你的数据框,创建一个新的数据框并合并它们。
预赛
import pandas as pd
import datetime
data = {'Launch':['2020-04-22', '2020-09-02', '2019-12-24', '2020-06-14'],
'Delivery':['10', '14', '9', 'nan'],
'Step-up':['NaT', '2021-01-03', '2020-04-20', '2022-02-18']}
df = pd.DataFrame(data)
这是回答您问题的部分:
# create a new dataframe
append = {'Maturity':[]}
# iterate throw all rows of the old dataframe
for index, row in df.iterrows():
# for each row make your computation
if row['Delivery'] == 'nan':
# append your data to the new dataframe
append['Maturity'].append('nan')
elif row['Step-up'] == 'NaT':
append['Maturity'].append(datetime.datetime.strptime(row['Launch'], '%Y-%m-%d') + datetime.timedelta(days=int(row['Delivery'])))
elif row['Step-up'] != 'NaT':
launch_plus_delivery = datetime.datetime.strptime(row['Launch'], '%Y-%m-%d') + datetime.timedelta(days=int(row['Delivery']))
stepup = datetime.datetime.strptime(row['Step-up'], '%Y-%m-%d')
if stepup < launch_plus_delivery:
append['Maturity'].append(row['Step-up'])
else:
append['Maturity'].append(launch_plus_delivery)
# add your new data as a new column to the old dataframe
df['Maturity'] = append['Maturity']
推荐阅读
- excel - 无效的过程调用或参数(错误 5)但代码正确执行
- r - 是否有用于复制数据框的 R 函数
- java - 无法创建 Vpn 服务
- c - 为什么信号量不阻塞第二个线程?(C)
- objective-c - NSTaggedPointerString stringByReplacingCharactersInRange:withString:]: iOS13 中的 nil 参数
- sql - 为制药行业的药品生成唯一的序列号
- node.js - 无法执行“npm install --save firebase”
- java - 无法将大型 csv 文件存储到哈希图中
- javascript - 对象的属性在放入本地存储时不会修改元素的值
- ios - 如何为我的视图解决自动布局约束