如何解决将 Dataframe 的 DataFrame 转换为单个 DataFrame 仅选择某些列 Python
exchangeInfo = {
"timezone": "UTC","serverTime": 1565246363776,"rateLimits": [],"exchangeFilters": [],"symbols": [
{
"symbol": "ETHBTC","status": "TradING","baseAsset": "ETH","baseAssetPrecision": 8,"quoteAsset": "BTC","quotePrecision": 8,"quoteAssetPrecision": 8,"baseCommissionPrecision": 8,"quoteCommissionPrecision": 8,"filters": [
{
"filterType": "PRICE_FILTER","minPrice": "0.00000100","maxPrice": "100000.00000000","tickSize": "0.00000100",},{
"filterType": "PERCENT_PRICE","multiplierUp": "1.3000","multiplierDown": "0.7000","avgPriceMins": 5,{
"filterType": "LOT_SIZE","minQty": "0.00100000","maxQty": "100000.00000000","stepSize": "0.00100000",],}
df = pd.json_normalize(exchangeInfo["symbols"])
df = pd.concat(
[
df,df.pop("filters")
.apply(lambda x: dict(i for d in x for i in d.items()))
.apply(pd.Series),axis=1,).drop(columns="filterType")
print(df)
打印:
symbol status baseAsset baseAssetPrecision quoteAsset quotePrecision quoteAssetPrecision baseCommissionPrecision quoteCommissionPrecision minPrice maxPrice tickSize multiplierUp multiplierDown avgPriceMins minQty maxQty stepSize
0 ETHBTC TradING ETH 8 BTC 8 8 8 8 0.00000100 100000.00000000 0.00000100 1.3000 0.7000 5 0.00100000 100000.00000000 0.00100000
但是,我只想选择其中的 2 个过滤器,按过滤器类型名称,我想要“PRICE_FILTER”和“LOT_SIZE”
解决方法
要仅从“PRICE_FILTER”和“LOT_SIZE”过滤器中获取列,请尝试:
df = pd.json_normalize(exchangeInfo["symbols"])
df = pd.concat(
[
df,df.pop("filters")
.apply(
lambda x: dict(
i
for d in x
for i in d.items()
if d["filterType"] in {"PRICE_FILTER","LOT_SIZE"}
)
)
.apply(pd.Series),],axis=1,).drop(columns="filterType")
print(df)
打印:
symbol status baseAsset baseAssetPrecision quoteAsset quotePrecision quoteAssetPrecision baseCommissionPrecision quoteCommissionPrecision minPrice maxPrice tickSize minQty maxQty stepSize
0 ETHBTC TRADING ETH 8 BTC 8 8 8 8 0.00000100 100000.00000000 0.00000100 0.00100000 100000.00000000 0.00100000
,
您需要列出您想要的过滤器,然后从列表中选择任何一个:
filters = ['PRICE_FILTER','LOT_SIZE']
df = df[df['filters'].str.isin('|'.join(filters))]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。