【发布时间】:2018-09-18 17:55:39
【问题描述】:
我在将多个数据帧合并在一起时遇到问题。我下载了一些历史交易数据并将其保存到 csv 文件中。所以现在我想将 cvs 文件中的数据读入几个数据帧,并提取一些收盘价。
我创建了一个名为 read_dataset 的函数,它将数据读入数据帧并返回该数据帧。
结合 for 循环,我将所有数据帧存储在一个字典中。字典键是货币的缩写(参见 coin_list 数据框)。
# List of available coins, saved in a DataFrame called coin_list
coins = { 'Bitcoin': 'BTC', 'Ethereum': 'ETH', 'Ripple': 'XRP', 'BitcoinCash': 'BCH', 'Litecoin':'LTC', 'EOS': 'EOS',
'Tronix': 'TRX', 'Stellar' : 'XLM', 'Neo' : 'NEO', 'Cardano': 'ADA', 'IOTA' : 'IOT', 'Monero': 'XMR'}
# Create a coin list as Dataframe of the dictionary above
coin_list = pd.DataFrame(list(coins.items()), index = np.arange(0,12), columns=('Currency', 'Abbreviation'), dtype=str)
# Read data into DataFrames
def read_dataset (filename):
print('Reading data from %s' % filename)
file = pd.read_csv(filename)
file = file.drop('Unnamed: 0', axis=1)
return file
# Read all cryptocurrency data into a dictionary of dataframes.
currency_data = {}
df = pd.DataFrame()
for currency in coin_list['Abbreviation']:
df = read_dataset(currency + '_historical_data_daily_updated')
df = df.set_index('Timestamp')
currency_data[currency] = df
currency_data
Out:
{'ADA': close high low open volumefrom volumeto
Timestamp
2017-12-30 0.5900 0.6941 0.4200 0.4955 24118261.70 14016860.69
2017-12-31 0.7100 0.7400 0.5900 0.5900 13107255.34 8971147.70
2018-01-01 0.7022 0.7150 0.6320 0.7100 13805601.70 9403559.91
2018-01-02 0.7620 0.8000 0.6750 0.7022 8440669.40 6292466.84
所以在创建dict currency_data 之后,我想访问并分离currency_data 中包含的数据框。因此,我想创建一个 for 循环,例如将数据帧的所有收盘价合并到一个数据帧中。
有谁知道我如何实现这一目标?
我可以使用以下代码对两个数据帧执行此操作,但无法将其转换为 for 循环。
a = pd.DataFrame()
a['ADA closeprice'] = currency_data['ADA']['close']
b = pd.DataFrame()
b['BTC closeprice'] = currency_data['BTC']['close']
c = pd.merge(a, b, left_index=True, right_index=True)
c.drop_duplicates()
c.head()
ADA closeprice BTC closeprice
Timestamp
2017-12-30 0.5900 12531.52
2017-12-31 0.7100 13850.40
2018-01-01 0.7022 13444.88
2018-01-02 0.7620 14754.13
2018-01-03 1.1000 15156.62
或者有没有更好的方法从 cvs 文件创建不同的数据帧并将其存储在 dict 中?
感谢您的帮助!
【问题讨论】:
标签: python pandas dataframe merge