【发布时间】:2018-08-30 04:08:35
【问题描述】:
我正在尝试计算 pandas 数据帧中两个连续行之间的差异,并根据我想用某个值填充一列的结果。
例如:
以下是示例数据
ID Date
1 2/2/2018
2 2/3/2018
3 2/18/2018
3 2/19/2018
3 2/27/2018
4 5/5/2018
4 6/9/2018
5 6/10/2018
6 7/1/2018
6 7/2/2018
6 7/10/2018
6 7/30/2018
6 8/1/2018
6 8/3/2018
7 8/10/2018
数据按 ID 分组。
以下是示例输出数据
因此,每当 ID 发生变化时,“代码”列都会显示“I”。对于相同的 ID,如果两个连续日期之间的差异小于 30,则“代码”列具有“R1”,对于相同的 ID,如果下一个日期在前一个日期的 30 天内,“代码”将具有“R2”,对于如果下一个数据在前一个“代码”的 30 天内,则相同的 ID 将具有“R4”。例如,以 case ID--"4" 为例,“Code”的两行都是“I”,因为即使 ID = 4,这两个日期也相距 30 天以上。 2018 年 6 月 9 日 - 2018 年 5 月 5 日 = 34。
sorted_data["Code"] = "I"
def conditions(data):
if data['Completed Date'].diff() <=30:
val = "R1"
elif data['Completed Date'].diff() <=30:
val = "R2"
elif data['Completed Date'].diff() <=30:
val = "R3"
elif data['Completed Date'].diff() <=30:
val = "R4"
elif data['Completed Date'].diff() <=30:
val = "R5"
elif data['Completed Date'].diff() <=30:
val = "R6"
elif data['Completed Date'].diff() <=30:
val = "R7"
elif data['Completed Date'].diff() <=30:
val = "R8"
return val
for groups, data in sorted_data.groupby("Cust_No"):
print(conditions(sorted_data))
我不知道如何获取下一行值来比较日期。上面的代码不起作用并给我错误。
【问题讨论】:
-
研究使用
np.select -
@Deya,请发布可以复制的文本以创建示例数据集,图像不好。
-
@HaleemurAli,我重新格式化了它。如果您有更多信息,请告诉我