迭代pandas dataframe的groupby结果,并对每个组进行操作

2024-06-16 10:55:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧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文件,并将它们附加到最终的数据帧中。在

在这种情况下,我需要

^{pr2}$

我试着做的是

要合并的函数

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

然后做一个格劳比和迭代

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

但没有达到预期。在

也许不用groupby也可以做到,但是对不起,我没有理解,所以试着用groupby。在

请给出一个代码示例。使用groupby或不使用groupby。在


Tags: 文件csv数据代码group事件情况filename
2条回答

您可以从一个函数开始,该函数concats是每组的DataFrames:

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

那么只要groupby和{}:

^{pr2}$

应用了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循环的filterout,我得到了附加的文件。在

相关问题 更多 >