[英]Alternative way of writing for loop and if in python when working with a dataframe to make it faster
我有一個名為“plans_to_csv”的數據框,如下所示:
我需要做以下分析以了解實際模式是什么。 但這需要很長時間才能運行。 是否有另一種方法可以編寫此代碼以使其更快? 非常感謝您提前提供的幫助。
for i in range (0, len(plans_to_csv)-2):
if (plans_to_csv['mode'][i+1]=='walk' and plans_to_csv['type'][i+2]=='car interaction' and
plans_to_csv['person_id'][i]==plans_to_csv['person_id'][i+2]):
plans_to_csv['actual_mode_car'][i]=1
您可以移動列並進行比較。 這將利用矢量化並且應該更快。
selection = (plans_to_csv['mode'].shift(-1) == 'walk') & (plans_to_csv['type'].shift(-2)=='car interaction') & (plans_to_csv['person_id'] == plans_to_csv['person_id'].shift(-2))
plans_to_csv['actual_mode_car']= selection.astype(int)
請注意,這會將所有與比較不匹配的條目設置為 0。 如果不需要,您可以執行 plans_to_csv['actual_mode_car'][selection]= 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.