2016-02-05 108 views
1

我有熊貓dataframes的字典,每一幀包含對應於時間戳的時間戳和市場帽,所述密鑰中的是:合併dataframes一起在for循環中

coins = ['dashcoin','litecoin','dogecoin','nxt'] 

我想創建一個新的鍵入字典'合併'並使用pd.merge方法根據它們的時間戳合併4個現有數據幀(我想要完成的行,因此使用'內部'連接方法將是合適的。

其中一個數據幀:

data2['nxt'].head() 
Out[214]: 
timestamp nxt_cap 
0 2013-12-04 15091900 
1 2013-12-05 14936300 
2 2013-12-06 11237100 
3 2013-12-07 7031430 
4 2013-12-08 6292640 

我目前得到的結果使用此代碼:

data2['merged'] = data2['dogecoin'] 

for coin in coins: 
    data2['merged'] = pd.merge(left=data2['merged'],right=data2[coin], left_on='timestamp', right_on='timestamp') 

但這種重複「合併」多吉幣',但是如果data2['merged']= data2['dogecoin'](或一些類似的數據),則合併功能贏得了」 t工作的價值是不存在的'合併'

編輯:我希望的結果是創建一個新的元素在字典'data2'(data2 ['合併'])中看到一個合併的數據幀,包含合併的數據幀從數據中的其他元素2

+0

什麼是你想要的結果呢?一個數據框或一個合併數據框的字典?還是現有字典中的新數據框元素? – Parfait

+0

對不起,我應該已經更清楚了,請看我的編輯 –

回答

1

嘗試更換廣義pd.merge()實際命名的自由度,但你必須開始數據幀與至少一個第一:

data2['merged'] = data2['dashcoin'] 

# LEAVE OUT FIRST ELEMENT 
for coin in coins[1:]: 
     data2['merged'] = data2['merged'].merge(data2[coin], on='timestamp') 
0

既然你已經由coins列表,爲什麼不乾脆像

data2['merged'] = data2[coins[0]] 
for coin in coins[1:]: 
    data2['merged'] = pd.merge(.... 

除非我的誤解,這個問題是不特定於dataframes,它只是在第一個元素要區別對待如何寫一個循環其餘的部分。