Pandas Dataframes:列表中的一列值嵌套在另一列,同一行中吗?

时间:2019-10-25 09:21:49

标签: python pandas dataframe vectorization

我正在使用与以下类似的Pandas数据框:

     My_date      Something_else    My_list
0    25/10/2019   ...               [25/10/2019, 26/10/2019]
1    03/07/2019   ...               [28/11/2017, 12/12/2017, 26/12/2017]
2    09/04/2019   ...               [11/06/2015]

我想检查“ My_date ”列中的值是否在同一行的“ My_list ”列中。例如,在这里我想得到以下输出,矢量非常有效

     Result
0    true
1    false
2    false

我可以使用' for '循环来执行此操作,例如here描述了各种方法。但是,我知道迭代是rarely the best solution,因为我的表有超过一百万行,并且列表中的许多都有365个值,所以更是如此。 (但如上所述,这些列表并不总是日期范围。)

我知道有很多方法可以对DataFrame进行矢量计算,例如使用。 loc 或。 eval 。关键是,在我的情况下,由于这些嵌套列表,没有任何效果。因此,我想找到一个矢量化解决方案来做到这一点。如果有关系,我所有的“ 日期”都属于pandas.Timestamp类型。

可能还有其他与类似问题相关的问题,但是我还没有用自己的话找到任何合适的答案或问题。谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

尝试:

scipy.spatial.SphericalVoronoi()

df['Result'] = df.apply(lambda x: x['My_date'] in x['My_list'], axis=1)

输出:

df=pd.DataFrame({'My_date' : ['25/10/2019','03/07/2019','09/04/2019'], 'My_list' : [['25/10/2019', '26/10/2019'],['28/11/2017', '12/12/2017', '26/12/2017'],['11/06/2015']]})
df['Result'] = df.apply(lambda x: x['My_date'] in x['My_list'], axis=1)