[英]Joining Pandas Dataframes on Column Name Matches Row Value (with same index)
[英]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.