簡體   English   中英

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

[英]Pandas Dataframes: is the value of a column in a list nested in another column, same row?

我正在使用 Pandas dataframe 類似於:

     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 ”。 例如,在這里我想以矢量方式或非常有效地獲得以下 output:

     Result
0    true
1    false
2    false

我可以使用' for '循環來做到這一點,例如這里描述了各種方法。 但是,我知道迭代很少是最好的解決方案,尤其是因為我的表有超過 100 萬行,並且許多列表有 365 個值。 (但如上所示,這些列表並不總是日期范圍。)

我知道有很多方法可以在 DataFrames 上進行矢量計算,使用。 loc或。 評估為例。 關鍵是,在我的情況下,由於這些嵌套列表,沒有任何東西可以按預期工作......因此,我想找到一個矢量化解決方案來做到這一點。 如果重要的話,我所有的“日期”都是pandas.Timestamp類型。

可能還有其他與類似問題相關的問題,但是我沒有用我自己的話找到任何合適的答案或問題。 謝謝您的幫助!

嘗試:

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)

輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM