Python Pandas-在数据框中乘以列数据

时间:2018-08-08 19:42:24

标签: python pandas

我们有一个样本加密货币投资组合,希望将每个硬币余额转换为美元,并获得总投资组合价值(美元)。

代码:

# Assets to convert
assets_to_convert =  [{'Asset': 'BTC', 'Bal': 0.5}, 
                    {'Asset': 'IOTX', 'Bal': 4}, 
                    {'Asset': 'QKC', 'Bal': 3}, 
                    {'Asset': 'AGI', 'Bal': 9}, 
                    {'Asset': 'NXS', 'Bal': 2}, 
                    {'Asset': 'DATA', 'Bal': 4}, 
                    {'Asset': 'SC', 'Bal': 5}, 
                    {'Asset': 'NPXS', 'Bal': 9}]

assets_to_convert = pd.DataFrame(assets_to_convert)

# All Pairs Prices
prices = pd.read_json("https://api.binance.com/api/v1/ticker/allPrices")
prices = pd.DataFrame(prices)
pattern = r"(\w+)(USDT|BTC|ETH|BNB)$"
prices[["Asset","Quote"]] = prices["symbol"].str.extract(pattern) 
BTCUSDT_price  = float(prices.price[prices.symbol == "BTCUSDT"])  

# Dataframes Merged
merged = pd.merge(assets_to_convert,prices, on="Asset")
merged["USD_bal"] = "??"

print(merged.head())

合并后的表格正在返回以下内容:

  Asset  Bal          price   symbol Quote USD_bal
0   BTC  0.5  6328.29000000  BTCUSDT  USDT      ??
1  IOTX  4.0     0.00000227  IOTXBTC   BTC      ??
2  IOTX  4.0     0.00003986  IOTXETH   ETH      ??
3   QKC  3.0     0.00000637   QKCBTC   BTC      ??
4   QKC  3.0     0.00011241   QKCETH   ETH      ??

可以通过报价==“ BTC”过滤并获得“ price”列将资产硬币转换为BTC。 那么美元的转换为:“ Bal” *“ price” *“ BTCUSDT_price”

我们如何做到?

(如果合并和过滤数据帧不是正确的方法,请提出正确的方法。)

1 个答案:

答案 0 :(得分:2)

从您的公式中简单地将Bal乘以Bal的价格乘以比特币的价格,有什么不对?

merged['USD_bal'] = merged.price * merged.Bal * merged.iloc[0].price