根据另一列从熊猫系列的列表中选择元素

我有以下形式的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]

无论我尝试了什么,我总是无法根据最后一列正确地识别列表中的正确元素。有什么建议吗?

cynthiazl 回答:根据另一列从熊猫系列的列表中选择元素

据我了解,您希望将“触发器”作为元素列表中的索引,从中减去其他元素。我仍然不知道您要对与Mike对应的那行说什么。

  1. 从数据框(触发)创建第三列的list1
  2. 从数据框(日期)中创建第二列的list2
  3. 创建一个空的list3,它将作为您的Dates_Difference列。
  4. 使用变量list1枚举i,并使用变量list2遍历j内的list2[i] - list2[j]并继续将list3附加到{{1} }。相应地处理i = NaN时的情况。
  5. list3作为新列插入名称为Dates_diff的数据框

希望它会有所帮助:)

,

处理NaN之后,以下解决方案将起作用:

df.apply(lambda row: row.Dates[row.Trigger],axis=1)
本文链接:https://www.f2er.com/3159965.html

大家都在问