2017-09-27 120 views
-2

我有很多csv文件中的數據集,它們看起來像我附加的圖片。結合csv文件,按時間排序並平均排序

在第一列中總是以分鐘爲單位的時間,但時間步數和總行數在原始數據文件中不同。我想有一個輸出文件(csv文件),其中所有的原始文件按時間組合並排序。所以時間從列的頂部到底部增加。

raw data and output

濃度列應被平均,當多於一個號碼存在。

我想是這樣的:

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

d1 = pd.read_csv('dat1.txt', sep="\t") 
d2 = pd.read_csv('dat2.txt', sep="\t") 

d1.columns 
d2.columns 

merged_outer = pd.merge(d1,d2, on='time', how='outer') 
print merged_outer 

,但它不會導致正確的輸出。我是熊貓的初學者,但我希望我能夠很好地解決問題。感謝您的任何想法或建議!


謝謝你的主意。不幸的是,當我運行它時,我收到一條錯誤消息,指出dat1.txt不存在。這似乎很奇怪,我爲我最初讀的原始文件是:

d1 = pd.read_csv('dat1.txt', sep="\t") 
d2 = pd.read_csv('dat2.txt', sep="\t") 

對不起,這裏的數據作爲原始文本:

raw data 1 
time column2 column3 concentration 
1 2 4 3 
2 2 4 6 
4 2 4 2 
7 2 4 5 


raw data 2 
time column2 column3 concentration 
1 2 4 6 
2 2 4 2 
8 2 4 9 
10 2 4 5 
12 2 4 7 
+1

下次您提問時,粘貼'csv'文件的原始文本而不是截圖,然後其他人可以更輕鬆地測試其代碼 –

回答

1

像這樣的東西可能會奏效

filenames = ['dat1.txt', 'dat2.txt',...] 
dataframes = {filename: pd.read_csv(filename, sep="\t") for filename in filenames} 

merged_outer = pd.concat(dataframes).groupby('time').mean() 

當您將字典傳遞給pd.concat時,它會創建一個MultiIndex DataFrame,其中的字典鍵爲級別0