簡體   English   中英

遍歷熊貓數據框的分組結果,並對每個分組進行操作

[英]iterating over a group-by result of pandas dataframe and operate on each group

我有一個數據幀2 * N

eventcode filename
ET0001    A.csv
ET0001    B.csv
ET0002    C.csv
ET0002    D.csv
ET0002    E.csv
ET0003    F.csv
ET0003    G.csv

我需要進行迭代,對於每個事件代碼組,我想讀取該組中的每個.csv文件,並將它們附加到最終數據幀中。

在這種情況下,我需要

ET0001 df_AB.csv    ###(name is like this but actually they formed after appending A.csv and B.csv)
ET0002 df_CDE.csv
ET0003 df_FG.csv

我嘗試做的是

合並功能

 def finalmerge(d):
     dff = pd.read_csv(str(d))
     v = dff.append(dff,ignore_index=True)
     return v

然后做一個grouby和迭代

g = df.groupby('EVENT_CODE')
for name, group in g:
    f = group['filename'].apply(finalmerge)

但是沒有得到期望。

也許可以不使用groupby來完成,但是很抱歉,我不明白,所以嘗試使用groupby。

請提出一個代碼示例。 使用groupby或不使用groupby。

你可以用一個函數開始concat S上的DataFrame各組S:

def generate_dataframes_of_group(g):
    return pd.concat([pd.read_csv(f) for f in g.filename.values])

然后只需groupbyapply

df.groupby(df.eventcode).apply(generate_dataframes_of_groups)

應用了2個嵌套的for循環並求解

for x in df['EVENT_CODE'].unique():
       df1 = df[df['EVENT_CODE'] == x]
       c = pd.DataFrame(columns=df1.columns)
       for file in df1['filename']:
           d = pd.read_csv(str(file))
           c = c.append(d,ignore_index=True)

如果c是第二個for循環的過濾器,我得到了附加文件。

暫無
暫無

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

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