3

I have two dataframes :dfDepas and df7 ;

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

I try to merge these two dataframes according ['day_of_week'] which is the index in dfDepas dataframe. I don't know how can I use this : merged_df = pd.merge(dfDepas, df7, how='inner',on=['day_of_week'])

Any idea to help me please? Thank you

Kind regards

EDIT

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 

1 Answer 1

3

You can use reset_index and rename column 0 to day_of_week for matching:

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

Thank you Quickbeam2k1 for another solution:

merged_df = pd.merge(dfDepas.set_index('day_of_week'), 
                     df7,
                     right_index=True,
                     left_index =True)
Sign up to request clarification or add additional context in comments.

5 Comments

You where just a bit faster. Another way should be: dfDepas.set_index("day_of_week") and merge via index
@jezrael Thank you very much for helping me always, but this time I get C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key) 2002 # get column 2003 if self.columns.is_unique: -> 2004 return self._get_item_cache(key) 2005 2006 # duplicate columns & possible reduce dimensionality C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item) 1348 res = cache.get(item)
@CyrineEzzahra - can you add some sample of your data? 4-5 rows? Because now it is a bit complicated without data.
@jezrael please can you see the my edited post? thank you
@Quickbeam2k1 and jezrael Thank you very much for your help!! Kind regards

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.