我有多個(超過 100 個)這樣的檔案:
檔案名:00.csv
residue, vwd, total
AAA,0.00, -9.45
BBB, 0.45, -1.45
CCC, 0.44, -3
DDD, 0.1, -10
檔案名:01.csv
residue, vwd, total
AAA, 2, -0.56
BBB, -4, -9.32
CCC, 2.54, -10
DDD, 3, -6.4
...
我想在一個新的 csv 檔案中創建一個矩陣,其中第一列是“殘差”,其他的基于檔案名(沒有擴展名)。在檔案名下方,它應該是“總計”列中的值。它會是這樣的:
residue, 00, 01, ...
AAA, -9.45, -0,56, ...
BBB, -1.45, -9.32, ...
CCC, -3, -10,...
DDD, -10, -6.4, ...
. . .
提前致謝!
uj5u.com熱心網友回復:
這將起作用:
files = ['00.csv', '01.csv']
dfs = []
for file in files:
df = pd.read_csv(file)
df.columns = df.columns.str.strip()
df = df[['residue', 'total']].rename({'total': os.path.splitext(file)[0]}, axis=1)
dfs.append(df)
df = cols[0]
for sub_df in cols[1:]:
df = df.merge(sub_df, on='residue')
輸出:
>>> df
residue 00 01
0 AAA -9.45 -0.56
1 BBB -1.45 -9.32
2 CCC -3.00 -10.00
3 DDD -10.00 -6.40
uj5u.com熱心網友回復:
讓我們嘗試讀取檔案然后 pivot table
首先獲取該目錄中的所有 csv 檔案
import os
#current directory
path = "."
file_names = list(filter(lambda x:x.endswith(".csv"),os.listdir(path)))
print(file_names)
['filename: 00.csv', 'filename: 01.csv']
df = pd.DataFrame()
for file in file_names:
df = df.append(pd.concat([pd.read_csv(file),pd.DataFrame([file]*4,
columns= ["filename"])],axis=1))
# to extract digit from filename
df["filename"] =df["filename"].str.extract('(\d )')
print(df)
residue vwd total filename 0 AAA 0.00 -9.45 00 1 BBB 0.45 -1.45 00 2 CCC 0.44 -3.00 00 3 DDD 0.10 -10.00 00 0 AAA 2.00 -0.56 01 1 BBB -4.00 -9.32 01 2 CCC 2.54 -10.00 01 3 DDD 3.00 -6.40 01
然后pivot_table會做這項作業
df.pivot_table(values='total', index='residue', columns='filename')
最終輸出:
filename 00 01 residue AAA -9.45 -0.56 BBB -1.45 -9.32 CCC -3.00 -10.00 DDD -10.00 -6.40
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383036.html
下一篇:為什么要進行這種浮點轉換
