【发布时间】:2023-03-19 11:07:01
【问题描述】:
我有一个如下所示的数据框。我必须计算开始日期和结束日期之间的差异。 但是计算应该像下面我为一行所做的公式一样发生但我希望它对所有行都发生。
df['start_date'][1]-df['end_date'][0]
ship_id start_date end_date days_difference
0 10 2016-10-05 2016-10-06 1 days
1 10 2016-10-07 2016-10-12 5 days
2 10 2016-10-22 2016-10-24 2 days
3 10 2016-10-29 2016-11-01 3 days
4 10 2016-11-04 2016-11-06 2 days
我尝试使用 for 循环,但它没有给出正确的输出(下)它为所有行提供 8 天。
用于循环
foo = range(1,len(df)) bar = range(len(df))
for f, b in zip(foo, bar):
df['new_col'] = df['start_date'][f]-df['end_date'][b]
ship_id start_date end_date days_difference new_col
0 10 2016-10-05 2016-10-06 1 days 8 days
1 10 2016-10-07 2016-10-12 5 days 8 days
2 10 2016-10-22 2016-10-24 2 days 8 days
3 10 2016-10-29 2016-11-01 3 days 8 days
4 10 2016-11-04 2016-11-06 2 days 8 days
我想要的预期输出,最后我想按 ship_id 汇总天数
ship_id start_date end_date days_difference new_col
0 10 2016-10-05 2016-10-06 1 days 1 days
1 10 2016-10-07 2016-10-12 5 days 10 days
2 10 2016-10-22 2016-10-24 2 days 5 days
3 10 2016-10-29 2016-11-01 3 days 3 days
4 10 2016-11-04 2016-11-06 2 days
【问题讨论】:
标签: python python-3.x pandas dataframe