簡體   English   中英

Python熊貓遍歷數據框

[英]Python pandas iterate through dataframe

我正在嘗試與Pandas合作,並且需要以下問題的解決方案。

我有一個數據集,其列如下所示:

X1 Y1 Z1 1.....(bunch of other columns)
X1 Y1 Z1 2.....(bunch of other columns)
X1 Y1 Z1 3.....(bunch of other columns)
X2 Y2 Z2 1.....(bunch of other columns)
X2 Y2 Z2 2.....(bunch of other columns)
X2 Y2 Z2 3.....(bunch of other columns)
X2 Y2 Z2 4.....(bunch of other columns)

我需要通過將前三列作為鍵來處理數據集。 因此,我需要首先考慮與X1 Y1 Z1關聯的所有行,在其中處理一堆列,然后繼續執行下一個塊X2 Y2 Z2 所以首先

X1 Y1 Z1 1.....(bunch of other columns)
X1 Y1 Z1 2.....(bunch of other columns)
X1 Y1 Z1 3.....(bunch of other columns) 

其次是

X2 Y2 Z2 1.....(bunch of other columns)
X2 Y2 Z2 2.....(bunch of other columns)
X2 Y2 Z2 3.....(bunch of other columns)
X2 Y2 Z2 4.....(bunch of other columns)

我正在尋找以pandas或numpy解決的數據集。 而且我要處理數百萬行,因此熊貓的iterrows()會很慢。

如果您的數據已加載到具有XYZcol1col2 ....列的DataFrame df ,則可以如下遍歷數據的“組” /“塊”:

for concat_XYZ, df_group in df.groupby(df['X']+df['Y']+df['Z']):
    # process df_group
    # ....

每個df_group都是您希望在問題中使用的一個塊(或本身是一個DataFrame)。 XYZ列中字符串的串聯用於唯一地標識一個組。

如果處理相同,但需要按組將它們分開,則編寫函數並使用groupby.apply() ,它將在將函數組明智地應用后返回數據幀。

def do_stuff(DataFrame):
    DataFrame['stuff'] = DataFrame['col1'] + DataFrame['col2'] + DataFrame['col3']
    return DataFrame

new_df = original_df.groupby(['col1', 'col2', 'col3'], as_index=False).apply(do_stuff)    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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