我想將regex函式應用于資料框中的選定行。我的解決方案有效,但代碼非常長,我想知道是否沒有更好、更快、更優雅的方法來解決這個問題。
換句話說,我希望我的正則運算式函式應用于source_value列的元素,但僅應用于列source_type== rhombusAND ( rhombus_refer_to_odk_type== integerOR a decimal) 的行。
代碼:
df_arrows.loc[(df_arrows['source_type']=='rhombus') & ((df_arrows['rhombus_refer_to_odk_type']=='integer') | (df_arrows['rhombus_refer_to_odk_type']=='decimal')),'source_value'] = df_arrows.loc[(df_arrows['source_type']=='rhombus') & ((df_arrows['rhombus_refer_to_odk_type']=='integer') | (df_arrows['rhombus_refer_to_odk_type']=='decimal')),'source_value'].apply(lambda x: re.sub(r'^[^<=>] ','', str(x)))
uj5u.com熱心網友回復:
Series.isin在變數中使用條件m并替換使用Series.str.replace:
m = (df_arrows['source_type']=='rhombus') &
df_arrows['rhombus_refer_to_odk_type'].isin(['integer','decimal'])
df_arrows.loc[m,'source_value'] = df_arrows.loc[m,'source_value'].astype(str).str.replace(r'^[^<=>] ','')
編輯:如果掩碼是二維可能的問題應該是重復的列名,您可以對其進行測驗:
print ((df_arrows['source_type']=='rhombus'))
print (df_arrows['rhombus_refer_to_odk_type'].isin(['integer','decimal']))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456085.html
