Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一列从熊猫系列的列表中选择元素_Python_Pandas_List_Indexing - Fatal编程技术网

Python 基于另一列从熊猫系列的列表中选择元素

Python 基于另一列从熊猫系列的列表中选择元素,python,pandas,list,indexing,Python,Pandas,List,Indexing,我有一个如下形式的数据框: Name Dates Trigger John [d1,d2,d3] 1 Mike [d4] NaN Li [d1,d4,d5] 2 其中,列Dates中的行是Python列表,列表中的每个元素都是DateTime对象(例如“2019-08-15”) 我的最终目标是获得一个数组,该数组在Trigger中提到的索引位置的日期之间存在差异(以天为单位

我有一个如下形式的数据框:

  Name         Dates        Trigger
  John       [d1,d2,d3]     1
  Mike       [d4]           NaN
  Li         [d1,d4,d5]     2
其中,列Dates中的行是Python列表,列表中的每个元素都是DateTime对象(例如“2019-08-15”)

我的最终目标是获得一个数组,该数组在Trigger中提到的索引位置的日期之间存在差异(以天为单位),从而生成一个新列,如:

       Date_diff
   [d2-d1,d2-d2,d2-d3]
   [NaN]/d4
   [d5-d1,d5-d4,d5-d5]

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

据我所知,您希望将触发器作为元素列表中的索引,从中减去其他元素。我还是不知道你想对迈克对应的那一排说些什么

  • 从数据帧(触发器)创建第三列的
    list1
  • 从数据框(日期)创建第二列的
    list2
  • 创建一个空的
    列表3
    ,它将成为日期差异列
  • 用变量
    i
    枚举
    list1
    ,用变量
    j
    遍历其中的
    list2
    ,并将
    list2[i]-list2[j]
    添加到
    list3
    。相应地处理
    i=NaN
    的情况
  • list3
    作为新列插入数据框,名称为Dates\u diff

  • 希望能有所帮助:)

    处理NaN后,以下解决方案有效:

    df.apply(lambda row: row.Dates[row.Trigger], axis=1)