【发布时间】:2016-02-05 11:18:23
【问题描述】:
这是一个数据样本。
data['nxt'].head()
Out[47]:
market_cap_by_available_supply price_btc price_usd volume_usd
0 [1386136000000, 15091900] [1386136000000, 1.3982e-05] [1386136000000, 0.0150919] [1386136000000, 0.0]
1 [1386222394000, 14936300] [1386222394000, 1.31922e-05] [1386222394000, 0.0149363] [1386222394000, 0.0]
2 [1386308781000, 11237100] [1386308781000, 1.12001e-05] [1386308781000, 0.0112371] [1386308781000, 0.0]
3 [1386395502000, 7031430] [1386395502000, 9.6644e-06] [1386395502000, 0.00703143] [1386395502000, 0.0]
4 [1386481920000, 6292640] [1386481920000, 8.82299e-06] [1386481920000, 0.00629264] [1386481920000, 0.0]
我只感兴趣:market_cap_by_available_supply
data['nxt'].market_cap_by_available_supply
0 [1386136000000, 15091900]
1 [1386222394000, 14936300]
2 [1386308781000, 11237100]
3 [1386395502000, 7031430]
4 [1386481920000, 6292640]
这篇文章的目的是:我们如何将它们分成两列:时间戳和市值?
但我的最终目标是(使用下面的代码)
创建一个包含 dashcoin 的市值和时间戳的新数据框,然后依次添加与 DASH 时间戳相对应的其他代币的市值,这方面的任何帮助都会很棒。
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
coins = ['dashcoin','litecoin','dogecoin','nxt']
API = 'https://api.coinmarketcap.com/v1/datapoints/'
data = {}
for coin in coins:
data[coin]=(pd.read_json(API + coin))
MC_data = pd.DataFrame(columns=[['Timestamp']+coins])
编辑:
我正在使用 for 循环,因为稍后我将添加许多“硬币”。 @timmy,你提取时间戳和上限的方法效果很好,虽然我无法让合并方法工作。
data2 = {}
for coin in coins:
#seperates timestamp and marketcap from their respective list inside each element
TS = data[coin].market_cap_by_available_supply.map(lambda r: r[0])
cap = data[coin].market_cap_by_available_supply.map(lambda r: r[1])
#Creates DataFrame and stores timestamp and marketcap data into dictionairy
df = DataFrame(columns=['timestamp','cap'])
df.timestamp = TS
df.cap = cap
data2[coin] = df
for coin in coins:
data2['merged'] = data2['merged'].merge(data[coin], on='timestamp', how='outer')
KeyError: 'merged'
【问题讨论】:
-
我更新了我的答案以解决您最近遇到的问题。问题在于您试图将第一个硬币数据帧与任何内容合并(在循环的第一次迭代中
data2['merged']中没有任何内容)