2017-09-17 1 views
0

Je veux fusionner df1 & df2 donc je suis parti avec un df basé sur le prix «élevé» de la colonne df1. Je pense que la meilleure approche est d'utiliser la colonne 'date' de df1. Le but est d'aligner 'df1 high' avec 'df2 datetime' afin que je puisse voir à quelle heure le high a été atteint pour ce jour. Donc, je devrais retourner un df avec DF1 ligne 0 et DF2 ligne 51. ce que j'ai essayé -Fusionner les images de sorte que je garde seulement les lignes qui ont la même date

df21 = pd.merge(df1, df2, on='date', how='right')#no good 
df22 = pd.merge(df1, df2, on='date', how='left')#returns nothing 
df23 = pd.merge(df1, df2, on='date', how='inner')#returns nothing 
df26 = pd.merge(df1, df2, right_index=True, left_index=True)#returns nothing 
df29 = pd.merge(df1, df2, left_on='date', right_on='date')#returns nothing 
df30 = pd.merge(df1, df2, right_index=True, left_index=True)#returns nothing 

je le DF1 suivant

 date open high low close 
0 2017-07-19 30.75 30.84 30.23 30.38 
1 2017-07-20 30.44 30.97 29.90 30.52 
2 2017-07-21 30.40 31.48 30.30 31.12 
3 2017-07-22 31.89 31.98 31.11 31.49 
4 2017-07-25 31.85 31.85 29.62 29.78 

et j'ai DF2

   datetime close high low open OI  V  WAP \ 
49 2017-07-19 10:19:00 30.62 30.70 30.60 30.69 91 196 30.654 
50 2017-07-19 10:20:00 30.68 30.73 30.64 30.64 135 281 30.699 
51 2017-07-19 10:21:00 30.71 30.84 30.69 30.69 383 1156 30.768 
52 2017-07-19 10:22:00 30.73 30.74 30.69 30.70 40 88 30.710 
53 2017-07-19 10:23:00 30.79 30.83 30.74 30.74 165 313 30.796 

      date  time 
49 2017-07-19 10:19:00 
50 2017-07-19 10:20:00 
51 2017-07-19 10:21:00 
52 2017-07-19 10:22:00 
53 2017-07-19 10:23:00 

Répondre

1

Vous devez fusionner deux clés left_on=['date', 'high'], right_on=['date', 'high']

In [709]: df1.merge(df2, left_on=['date', 'high'], right_on=['date', 'high']) 
Out[709]: 
     date open_x high low_x close_x    datetime close_y \ 
0 2017-07-19 30.75 30.84 30.23 30.38 2017-07-19 10:21:00 30.71 

    low_y open_y OI  V  WAP  time 
0 30.69 30.69 383 1156 30.768 10:21:00 

Ensuite, supprimez ou renommez les colonnes selon vos besoins.

+0

Je m'ennuie du vieux nom d'utilisateur de John Galt :-( –

+0

merci - je ne savais pas que vous pouviez fusionner sur 2 colonnes et j'avais aussi des dates différentes. –