[英]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])
然后只需groupby
並apply
:
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.