簡體   English   中英

當使用 dataframe 以使其更快時,另一種編寫循環的方法和 if 在 python 中

[英]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.

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