我有多個檔案需要合并到一個大檔案中,但是它們的組 ID 應該根據新生成的檔案進行修改。請參見以下示例:
資料框 1:df1.txt
name group_id
A 1
B 1
C 1
D 2
資料框 2:df2.txt
name group_id
E 1
F 1
G 2
H 3
資料框 3:df3.txt
name group_id
I 1
J 2
K 2
L 3
最終輸出預計為:
name group_id
A 1
B 1
C 1
D 2
E 3
F 3
G 4
H 5
I 6
J 7
K 7
L 8
group_id 列應在最終資料幀中重新標記,但仍基于其在前一個資料幀中的 group_ids。
對于代碼,我嘗試將它們合并為一個,但不知道如何標記組 id 部分。
df = pd.concat(map(pd.read_csv, glob.glob('df*.txt')))
提前致謝!
測驗資料代碼是否可以為您節省一些時間:
df1 = pd.DataFrame([['A', 1], ['B', 1], ['C', 1], ['D', 2]], columns=('name','group_id'))
df2 = pd.DataFrame([['E', 1], ['F', 1], ['G', 2], ['H', 3]], columns=('name','group_id'))
df3 = pd.DataFrame([['I', 1], ['J', 2], ['K', 2], ['L', 3]], columns=('name','group_id'))
uj5u.com熱心網友回復:
我們必須在連接后重新分配組號,這可以使用groupby ngroup來完成,它基本上將組號從 0 開始分配到組數 - 1
df = pd.concat(map(pd.read_csv, glob.glob('df*.txt')))
df['group_id'] = df.groupby([(df.index == 0).cumsum(), 'group_id']).ngroup().add(1)
結果
print(df)
name group_id
0 A 1
1 B 1
2 C 1
3 D 2
0 E 3
1 F 3
2 G 4
3 H 5
0 I 6
1 J 7
2 K 7
3 L 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447935.html
上一篇:分組并按熊貓中的最大值過濾
