亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 python pandas 中處理多個 for 循環

在 python pandas 中處理多個 for 循環

慕勒3428872 2022-12-27 10:27:43
我正在處理一個包含 5 列數據的熊貓數據框。我需要在每列上添加過濾器以執行某些計算。for mfilter in raw_df['Column1'].unique():        m_filter=raw_df[raw_df['Column1']==mfilter]        for rfilter in m_filter['Column2'].unique():            r_filter=m_filter[m_filter['Column2']==rfilter]            for cfilter in r_filter['Column3'].unique():                c_filter=r_filter[r_filter['Column3']==cfilter]                for cafilter in c_filter['Column4'].unique():                    ca_filter=c_filter[c_filter['Column4']==ca_filter]                    for part in ca_filter['part_no'].unique():                        part_df=ca_filter[(category_filter['part_no']==part)]我還有另一列“值”,在進入“部分”for 循環后,我將對其執行一些計算。由于數據非常大,完整執行需要大約 7-8 小時(每個部分大約 1 秒)的時間。有沒有更好的方法來減少所花費的時間并提高時間效率?這是一些示例數據:Column1 Column2 Column3 part_no ValuesA   J   X   1   1A   K   Y   2   2B   K   X   3   3C   L   Y   4   4C   L   X   5   5D   J   X   6   6D   J   X   6   7D   J   X   6   8C   L   Y   4   9C   L   Y   4   10C   L   Y   4   11在數據集中,如果我們觀察到,Values 列的每個部分(每個類別)都有特定的值。在獲取每個零件數據時,我必須借助該 part_data 的值執行某些計算。我將把這個 part_df 推到另一個函數,其余的任務發生在這個函數中。
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

您可以使用這樣的東西(我沒有使用Column4,因為您的樣本數據中不存在):


df.groupby(['Column1', 'Column2', 'Column3', 'part_no']).apply(print)

它調用對print指定列具有相同值的每個組指定的函數(在本例中)。輸出是:


  Column1 Column2 Column3  part_no  Values

0       A       J       X        1       1

  Column1 Column2 Column3  part_no  Values

1       A       K       Y        2       2

  Column1 Column2 Column3  part_no  Values

2       B       K       X        3       3

  Column1 Column2 Column3  part_no  Values

4       C       L       X        5       5

   Column1 Column2 Column3  part_no  Values

3        C       L       Y        4       4

8        C       L       Y        4       9

9        C       L       Y        4      10

10       C       L       Y        4      11

  Column1 Column2 Column3  part_no  Values

5       D       J       X        6       6

6       D       J       X        6       7

7       D       J       X        6       8

現在您需要做的就是定義一個函數,其中包含您在內部循環中擁有的任何內容,例如:


def Pothuri(part_df):

    # whatever other code you didn't show us, using part_df['Values'] etc.

然后:


df.groupby(['Column1', 'Column2', 'Column3', 'part_no']).apply(Pothuri)



查看完整回答
反對 回復 2022-12-27
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號