我正在尝试在pandas中合并3个数据帧。一个是20列,另外两个每列有2列。他们是这样组织的:
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
我正在尝试使用all_data = pd.merge(btc_price, eth_price, block_data, on = 'time', how = 'outer')
进行合并,但是当我这样做时,我收到以下错误:
文件“”,第1行,in all_data = pd.merge(btc_price,eth_price,block_data,on ='time',how ='outer')
TypeError:merge()为参数'how'
获取了多个值
这是什么意思,我该如何解决?
最终结果应该是一个包含22列的数据帧,包括来自所有3 df的所有行。然后我将删除缺少值的行。
编辑:如果你查看时间戳,前一个2 df发生在分钟上,而第三个发生在03秒......有没有办法解决这个问题?我有一个脚本,每分钟从json中提取这3个文件,我正在尝试相应地对齐3 df
答案 0 :(得分:5)
pd.merge
只能合并两个 DataFrame。第三个参数(在您的情况下为block_data
)被解释为“如何”。您还提供了命名的how='outer'
,这就是您看到错误消息的原因。解决您的问题:合并前两个DataFrame,然后将结果与第三个合并。