我有一個檔案夾,里面有很多 csv 檔案,每個檔案都包含信號資料的混亂。它們具有以下結構:
Frequency [kHz],Power [dbm]
852000,-135.812845793404
852008,-142.13849097071088
852016,-138.21218081816156
852024,-137.32593610384734
852032,-139.464539680863
我想將這些檔案合并到一個以頻率為鍵列的 DataFrame 中,因為每個檔案中的頻率都是相同的。所以它在 DataFrame 中應該看起來像這樣:
Frequency [kHz] | Power [dbm] | Power [dbm] | Power [dbm] | ...
所以我寫了以下代碼:
df = pd.DataFrame()
for f in csv_files:
csv = pd.read_csv(f)
df = pd.merge(df, csv, on='Frequency [kHz]', sort=False)
但我唯一得到的是一個 KeyError: 'Frequency [kHz]'
我最接近我想要的結果是通過,pd.concat([pd.read_csv(f) for f in csv_files], axis=0, sort=False)但中間仍然有那些頻率列。
uj5u.com熱心網友回復:
我認為您可以將它們全部收集為 dfs,然后合并,如下所示:
data_frames = []
for f in csv_files:
df = pd.read_csv(f)
data_frames.append(df)
df_merged = reduce(lambda left, right: pd.merge(left, right, on=['Frequency [kHz]'],
how='outer'), data_frames)
uj5u.com熱心網友回復:
您可以將它們全部讀入字典并使用 concat:
import pandas as pd
import glob
path = 'path'
all_files = glob.glob(path "/*.csv")
df_dict1 = {}
for filename in all_files:
df = pd.read_csv(filename)
df_dict1.update({f'{filename}':df})
df = pd.concat(df_dict1, axis =1)
df = df.droplevel(0, axis =1)
df.index = df['Frequency [kHz]']
df.drop(columns = 'Frequency [kHz]', inplace = True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/415701.html
標籤:
上一篇:Django與熊貓
