[英]How using isin inside lambda
import pandas as pd
import numpy as np
Open_Time_s=['2022-04-30 11:05:00+03:00','2022-04-30 11:10:00+03:00', np.nan, np.nan]
intersect=[np.nan,np.nan,'intersect_2022-04-30 11:05:00+03:00','intersect_2022-04-30 11:10:00+03:00']
df = pd.DataFrame.from_dict({'Open Time':Open_Time_s,'intersect':intersect})
df['LEVEL']=np.nan
在所有“開放時間”值相交的行上尋找匹配項。 您需要將索引值寫入“LEVEL”列
使用代碼: df['LEVEL']=df['intersect'].loc[df['intersect'].isna()==0].apply(lambda x: df[df['Open Time'].isin(x.replace(r'intersect_', ''))].index)
返回錯誤:只允許將類似列表的對象傳遞給 isin(),你傳遞了一個 [str]。 什么是可能的替代品 .isin ?
請告訴我如何使用 lambda 函數編寫類似的代碼: df[df['Open Time'].isin(df['intersect'].str.replace(r'intersect_', ''))].index.tolist()
需要結果:
Open Time intersect LEVEL
0 2022-04-30 11:05:00+03:00 NaN NaN
1 2022-04-30 11:10:00+03:00 NaN NaN
2 None intersect_2022-04-30 11:05:00+03:00 0
3 None intersect_2022-04-30 11:10:00+03:00 1
鑒於:
Open_Time_s=['2022-04-30 11:05:00+03:00','2022-04-30 11:10:00+03:00', np.nan, np.nan]
intersect=[np.nan,np.nan,'intersect_2022-04-30 11:05:00+03:00','intersect_2022-04-30 11:10:00+03:00']
df = pd.DataFrame.from_dict({'Open Time':Open_Time_s,'intersect':intersect})
正在做:
df[['intersect', 'intersect_time']] = df['intersect'].str.split('_', expand=True)
df['LEVEL'] = df.apply(lambda x: df[df['Open Time'].eq(x['intersect_time'])].index.tolist(), axis=1)
輸出:
Open Time intersect intersect_time LEVEL
0 2022-04-30 11:05:00+03:00 NaN NaN []
1 2022-04-30 11:10:00+03:00 NaN NaN []
2 NaN intersect 2022-04-30 11:05:00+03:00 [0]
3 NaN intersect 2022-04-30 11:10:00+03:00 [1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.