2017-09-01 1 views
0

J'ai 3 dataframes J'essaie de fusionner en pandas. L'un est de 20 colonnes, les deux autres ont 2 colonnes chacune. Ils sont organisés en tant que tels:Pandas fusionner erreur df

eth_price.head(n=3) 

Out[6]: 
      time eth_price 
0 8/28/17 16:19 344.021 
2 8/28/17 16:24 343.833 
3 8/28/17 16:29 343.643 
btc_price.head(n=3) 

Out[7]: 
        time btc_price 
0 2017-08-27 22:50:00 4,389.6113 
1 2017-08-27 22:51:00 4,389.0850 
2 2017-08-27 22:52:00 4,388.8625 

block_data.head(n=3) 
Out[8]: 
        time block_size difficulty estimated_btc_sent \ 
0 2017-08-30 22:55:03 165261989 888171856257  22433058065308 
5 2017-08-30 23:02:03 165261989 888171856257  22433058065308 
12 2017-08-30 23:09:03 164262692 888171856257  22210602766312 

    estimated_transaction_volume_usd  hash_rate market_price_usd \ 
0      1.030796e+09 7.417412e+09   4594.98 
5      1.030796e+09 7.417412e+09   4594.98 
12      1.020574e+09 7.373261e+09   4594.98 

    miners_revenue_btc miners_revenue_usd minutes_between_blocks \ 
0     2495   11467926.77     7.98 
5     2495   11467926.77     7.98 
12    2478   11388475.85     8.01 

    n_blocks_mined n_blocks_total n_btc_mined n_tx nextretarget \ 
0    168   482713 210000000000 273392  483839 
5    168   482713 210000000000 273392  483839 
12    167   482713 208750000000 271638  483839 

    total_btc_sent total_fees_btc   totalbtc trade_volume_btc \ 
0 164688219250248  39574691936 1653391250000000   44110.58 
5 164688219250248  39574691936 1653391250000000   44110.58 
12 163455939539341  39095614135 1653391250000000   44110.58 

    trade_volume_usd 
0  2.026876e+08 
5  2.026876e+08 
12  2.026876e+08 

Je suis en train de fusionner en utilisant all_data = pd.merge(btc_price, eth_price, block_data, on = 'time', how = 'outer') mais quand je le fais-je obtenir l'erreur suivante:

File "", line 1, in all_data = pd.merge(btc_price, eth_price, block_data, on = 'time', how = 'outer')

TypeError: merge() got multiple values for argument 'how'

Qu'est-ce que cela signifie et comment puis-je résoudre ce problème?

Le résultat final doit être une trame de données de 22 colonnes, incluant toutes les lignes de tous les 3 df. Je vais ensuite laisser tomber les lignes avec des valeurs manquantes.

EDIT: si vous regardez les horodateurs, les 2 premiers df surviennent à la minute tandis que le troisième se produit à 03 secondes ... est-il un moyen de fixer cela? J'ai un script qui tire ces 3 fichiers de JSON chaque minute et je suis en train d'aligner le 3 df en conséquence

+0

Incluez le message d'erreur _complete_ dans votre question. – DyZ

+0

@DYZ ok je l'ai fait, mais c'était le message d'erreur complet, tout ce qui manquait était le retraçage. – zsad512

+0

Jetez un oeil à cela pour avoir une idée comment réparer la colonne datetime https://stackoverflow.com/questions/38067704/how-to-change-the-datetime-format-in-pandas et cela pour le tutoriel sur la fusion et la jonction dataframes https://pythonprogramming.net/join-merge-data-analysis-python-pandas-tutorial/ – Colonder

Répondre

0

pd.merge peut fusionner seulement deux DataFrames. Le troisième paramètre (block_data dans votre cas) est interprété comme "comment". Vous fournissez également le how='outer' nommé, et c'est pourquoi vous voyez le message d'erreur. Solution à votre problème: fusionnez les deux premières DataFrames, puis fusionnez le résultat avec le troisième.