2016-08-19 60 views
3

我有兩個數據框:dfDepas和df7;用Python合併兩個數據框

dfDepas.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 7 entries, 0 to 6 
Data columns (total 4 columns): 
day_of_week 7 non-null object 
P_ACT_KW  7 non-null float64 
P_SOUSCR  7 non-null float64 
depassement 7 non-null float64 
dtypes: float64(3), object(1) 
memory usage: 280.0+ bytes 


df7.info() 
<class 'pandas.core.frame.DataFrame'> 
Index: 7 entries, Fri to Thurs 
Data columns (total 6 columns): 
ACT_TIME_AERATEUR_1_F1 7 non-null float64 
ACT_TIME_AERATEUR_1_F3 7 non-null float64 
ACT_TIME_AERATEUR_1_F5 7 non-null float64 
ACT_TIME_AERATEUR_1_F6 7 non-null float64 
ACT_TIME_AERATEUR_1_F7 7 non-null float64 
ACT_TIME_AERATEUR_1_F8 7 non-null float64 
dtypes: float64(6) 
memory usage: 392.0+ bytes 

我嘗試根據[「DAY_OF_WEEK」]這是在數據幀dfDepas索引這兩個dataframes合併。 我不知道如何使用這個:merged_df = pd.merge(dfDepas, df7, how='inner',on=['day_of_week'])

任何想法,以幫助我嗎? 謝謝

親切的問候

編輯

dfDepas 
day_of_week P_ACT_KW P_SOUSCR depassement 
Fri 157.258929 427.142857 0.0 
Mon 157.788110 426.875000 0.0 
Sat 166.989236 426.875000 0.0 
Sun 149.676215 426.875000 0.0 
Thurs 157.339286 427.142857 0.0 
Tues 151.122913 427.016021 0.0 
Weds 159.569444 427.142857 0.0 


df7 

ACT_TIME_AERATEUR_1_F1 ACT_TIME_AERATEUR_1_F3 ACT_TIME_AERATEUR_1_F5 ACT_TIME_AERATEUR_1_F6 ACT_TIME_AERATEUR_1_F7 ACT_TIME_AERATEUR_1_F8 

Fri 0.326258 0.330253 0.791144 0.654682 3.204544 1.008550 
Sat -0.201327 -0.228196 0.044616 0.184003 -0.579214 0.292886 
Sun 5.068735 5.250199 5.407271 5.546657 7.823564 5.786713 
Mon -0.587129 -0.559986 -0.294890 -0.155503 2.013379 -0.131496 
Tues-1.244922 -1.510025 -0.788717 -1.098790 -0.996845 -0.718881 
Weds-3.264598 -3.391776 -3.188409 -3.041306 -4.846189 -4.668533 
Thurs -0.178179 0.011002 -1.907544 -2.084516 -6.119337 

回答

3

您可以使用reset_index,並重新命名列0day_of_week匹配:

merged_df = pd.merge(dfDepas, 
        df7.reset_index().rename(columns={0:'day_of_week'}), 
        on=['day_of_week']) 

謝謝Quickbeam2k1另一種解決方案:

merged_df = pd.merge(dfDepas.set_index('day_of_week'), 
        df7, 
        right_index=True, 
        left_index =True) 
+2

你只要快一點。另一種方式應該是:dfDepas.set_index(「day_of_week」)並通過索引合併 – Quickbeam2k1

+0

@jezrael非常感謝您一直以來的幫助,但是這一次我得到了 C:\ Users \ Demonstrator \ Anaconda3 \ lib \ site-packages \大熊貓\在_getitem_column核心\ frame.py(自我,鍵) 2002#獲得列 2003如果self.columns.is_unique: - > 2004年回報self._get_item_cache(鍵) 2006#重複列和可能的降維 C:\ Users \ Demonstrator \ Anaconda3 \ lib \ site-packages \ pandas \ core \ generic.py in _get_item_cache(self,item) 1348 res = cache.get(item) – Poisson

+0

@CyrineEzzahra - 你可以添加一些示例的數據? 4-5行?因爲現在它沒有數據有點複雜。 – jezrael