創建多索引列數據框

雅各布

由 API 填充的兩個 Pandas DataFrame。需要加入特定格式的 DataFrame。

當前狀態- 兩個數據幀,每個數據幀都按時間戳索引

eth_df:
                  close          symbol
timestamp
1541376000000     206.814430     eth
1541462400000     209.108877     eth


btc_df:
                  close          symbol
timestamp
1541376000000     6351.06194     btc
1541462400000     6415.443409    btc

所需狀態- 按時間戳索引和按符號多索引列

portfolio_df:
                  eth            btc
                  close          close
timestamp
1541376000000     206.814430     6351.06194
1541462400000     209.108877     6415.443409

編輯 1:來自社區的請求:請您將 eth_df.to_dict() 和 btc_df.to_dict() 的結果添加到問題中嗎?

這是兩者的代碼和結果:

btc = cg.get_coin_market_chart_range_by_id('bitcoin','usd', start_date, end_date)

    portfolio_df = pd.DataFrame(data=btc['prices'], columns=['timestamp','close'])
    portfolio_df['symbol'] = 'btc'
    portfolio_df = portfolio_df.set_index('timestamp')
    portfolio_df.to_dict()
{'close': {1541376000000: 6351.061941056285,
  1541462400000: 6415.443408541094,
  1541548800000: 6474.847290336688,

show more (open the raw output data in a text editor) ...

  1627344000000: 'btc',
  1627430400000: 'btc',
  1627516800000: 'btc',
  1627603200000: 'btc',
  1627689600000: 'btc',
  ...}}



eth = cg.get_coin_market_chart_range_by_id('ethereum','usd', start_date, end_date)
eth_df = pd.DataFrame(data=eth['prices'], columns=['timestamp','close'])
eth_df['symbol'] = 'eth'
eth_df = eth_df.set_index('timestamp')
eth_df.to_dict()

{'close': {1541376000000: 206.8144295995958,
  1541462400000: 209.10887661978714,
  1541548800000: 219.16088708430863,

show more (open the raw output data in a text editor) ...

  1627344000000: 'eth',
  1627430400000: 'eth',
  1627516800000: 'eth',
...}}


btc = cg.get_coin_market_chart_range_by_id('bitcoin','usd', start_date, end_date)
笨狼

我對 CoinGeckoAPI 不是很熟悉,因此假設您獲得如下所示的數據框,您無需先設置索引:

from pycoingecko import CoinGeckoAPI
from datetime import datetime
cg = CoinGeckoAPI()

start_date, end_date = 1497484800,1499138400

btc = cg.get_coin_market_chart_range_by_id('bitcoin','usd', start_date, end_date)
btc_df = pd.DataFrame(data=btc['prices'], columns=['timestamp','close'])
btc_df['symbol'] = 'btc'

eth = cg.get_coin_market_chart_range_by_id('ethereum','usd', start_date, end_date)
eth_df = pd.DataFrame(data=eth['prices'], columns=['timestamp','close'])
eth_df['symbol'] = 'eth'

您連接數據幀並進行透視:

portfolio_df = pd.concat([btc_df,eth_df]).pivot_table(index="timestamp",columns="symbol")

然後交換級別:

portfolio_df = portfolio_df.swaplevel(axis=1)
portfolio_df

      symbol    btc     eth
                close   close
timestamp       
1497484800000   2444.493712 346.369070
1497571200000   2513.810348 358.284517
1497657600000   2683.571344 372.357011
1497744000000   2577.219361 359.438712
1497830400000   2620.136451 362.044289

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

從多索引創建數據框

無法使用數據框列創建索引

從四個 2d numpy 數組創建具有多級列索引的數據框

使用其名稱創建多索引數據框 - Pandas/Python

如何從沒有索引列的 csv 文件創建數據框(使用 python pandas)?

從行對構建多索引數據框

從兩個現有數據框創建兩個新數據框,同時考慮其多索引列及其值的所有組合

創建數據框時創建基於另一列的列

使用父數據框的列中的特定字符串創建數據框

從現有數據框列創建新數據框

創建數據框列表的數據框

從字典創建數據框

如何使用for循環在python數據框中創建具有多個值的新列?

解碼列並使用新數據創建新數據框

使用一對多映射在 Pandas 數據框中創建重複行

是否可以從 yfinance 為許多公司創建主數據框?

在 for 循環中創建多個數據框 - 熊貓

從具有眾多標籤的 Pandas 數據框創建 Tensorflow 數據集?

Pandas - 創建重複索引列的數據透視表

使用 pyspark 轉換行和列並創建相似性數據框

刪除使用合併數據框創建的列

自動為數據框列表創建新列 - R

如何創建指標列以指示數據框中先前條目的特定更改?

為 Pandas 列中的每個唯一值創建新的數據框

Python 數據框 - 如何評估/使用動態創建的列

同時創建新數據框和新列

使用數據框的兩列創建一個 seaborn 直方圖

使用公式在 pd 數據框中創建一個新列

從數據框列和值創建嵌套字典