我是 python 新手。請告訴我以下問題。
通過使用for或while回圈,我想將大約 200 個 csv 檔案合并到一個 csv 檔案中。一些帶有 head(5) 的 csv 檔案如下所示(每個 csv 檔案為 1122 行 * 2 列)。
0sec.csv
ID Damage
0 0 2697.5
1 2 1431.7
2 3 2719.3
3 4 345.8
4 5 349.1
1sec.csv
ID Damage
0 0 507.1
1 2 0.0
2 3 9644.3
3 4 388.7
4 5 0.0
我的目標是制作一個如下所示的單個 csv 檔案。
total_damage.csv
ID 0sec 1sec ~~~ 199sec 200sec
0 0 2697.5 507.1 xxx.x xxx.x
1 2 1431.7 0.0 xxx.x xxx.x
2 3 2719.3 9644.3 xxx.x xxx.x
3 4 345.8 388.7 xxx.x xxx.x
4 5 349.1 0.0 xxx.x xxx.x
我試過的
files = sorted(glob.glob('./python/*'))
df = pd.DataFrame()
for i, f in enumerate(files):
file = pd.read_csv(f)
file.rename(columns = {'Damage': '{}sec'.format(i)})
df = pd.merge(df, file)
df.to_csv('./python/total_Damage.csv', index=False)
錯誤資訊
No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False
如果你能教我當前使用 pd.merge 和回圈,我將不勝感激。
uj5u.com熱心網友回復:
你快到了。首先,您實際上并沒有重命名,因為您file=在重命名之前錯過了。
然后,要將列添加到資料框中,您只需執行df[col]=file[col].
所以:
df = pd.DataFrame()
for i, f in enumerate(files):
file = pd.read_csv(f)
file = file.rename(columns = {'Damage': '{}sec'.format(i)})
df['{}sec'.format(i)] = file['{}sec'.format(i)]
不要忘記在迭代之前添加一次 id 列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408659.html
標籤:
上一篇:根據情節選擇復制檔案
下一篇:回圈遍歷表和列組合
