我有以下形式的Pandas DataFrame:
Name Dates Trigger
John [d1,d2,d3] 1
Mike [d4] NaN
Li [d1,d4,d5] 2
其中日期 列中的行是Python列表,列表中的每个元素都是DateTime对象(例如'2019-08-15')。
我的最终目标是获得一个数组,该数组具有 Trigger 中提到的索引位置处 Date 之间的差异(以天为单位),从而产生一个新列,例如:
Date_diff
[d2-d1,d2-d2,d2-d3]
[NaN]/d4
[d5-d1,d5-d4,d5-d5]
无论我尝试了什么,我总是无法根据最后一列正确地识别列表中的正确元素。有什么建议吗?
答案 0 :(得分:0)
据我了解,您希望将“触发器”作为元素列表中的索引,从中减去其他元素。我仍然不知道您要对与Mike对应的那行说什么。
list1
list2
list3
,它将作为您的Dates_Difference列。list1
枚举i
,并使用变量list2
遍历j
内的list2[i] - list2[j]
并继续将list3
附加到{{1} }。相应地处理i = NaN
时的情况。list3
作为新列插入名称为Dates_diff的数据框希望它会有所帮助:)
答案 1 :(得分:0)
处理NaN之后,以下解决方案将起作用:
df.apply(lambda row: row.Dates[row.Trigger], axis=1)