2017-06-27 23 views
0

以下是可以正常工作的concat方法。有效Concat數據框

pd.concat([myd['a'], myd['b']], axis=1) 

    YearFrom cnt YearFrom cnt 
0 1001 9 1001 2 
1 2010 3 2010 1 
2 2011 199787 2011 127485 
3 2012 214548 2012 144348 
4 2013 991 2013 1396 
5 2014 236596 2014 159302 
6 2015 241611 2015 164767 
7 2016 195123 2016 162352 

1)我想yearFrom列只出現一次和CNT應該由數據框名稱,如cnt_a追加並在cnt_b

2)另一個問題是,目前存儲在字典幾個這樣dataframes。我期望下面的理解能起作用。但收到的錯誤:

pd.concat([[myd[i] for i in myd]], axis=1) 

TypeError: cannot concatenate a non-NDFrame object 

更新:我需要添加一列和行至最終數據幀。

這增加了最後的總列數。沒有問題:)

df['total']=df.sum(axis=1) 

這正是我所需要的,但不包括索引。我需要將此行命名爲「總和」。

df.append(df.sum(numeric_only=True), ignore_index=True) 

回答

1

我覺得你的索引需要set_index爲對齊數據:

myd = myd.set_index('YearFrom') 
pd.concat([myd['a'], myd['b']], axis=1) 

而對於第二:

df = pd.concat([v.set_index('yearFrom') for k, v in myd.items()], axis=1, keys=myd.keys()) 

對於總和行需要:

df.loc['total']=df.sum() 
+0

第二個答案太棒了。是否有可能獲得總數(每行和每列)? – shantanuo

+0

你認爲最終'df'還是每個'myd'? – jezrael

+0

更新了我的問題。 – shantanuo