从字符串的一部分获取数据框
Get a data frame from a part of a string
我有像这样的字符串形式的市场信息:
{"POLISUSDT": {"name": "POLISUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "POLIS", "trading_decimal": 8}, "XPRBTC": {"name": "XPRBTC", "min_amount": "100", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "BTC", "pricing_decimal": 10, "trading_name": "XPR", "trading_decimal": 8}, "PSPUSDT": {"name": "PSPUSDT", "min_amount": "5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "PSP", "trading_decimal": 8}, "KAVAUSDT": {"name": "KAVAUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "KAVA", "trading_decimal": 8}, "CFXUSDT": {"name": "CFXUSDT", "min_amount": "10", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 6, "trading_name": "CFX", "trading_decimal": 8}}
我想要每个市场的信息,分别。例如,如果我调用“POLISUSDT”,我想得到这个数据框:
min_amount
maker_fee_rate
taker_fee_rate
pricing_name
pricing_decimal
trading_name
trading_decimal
0.5
0.003
0.003
USDT
4
POLIS
8
在可以从示例中删除错误数据后,使用字典理解 json_normalize
:
d ={"POLISUSDT": {"name": "POLISUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "POLIS", "trading_decimal": 8}, "XPRBTC": {"name": "XPRBTC", "min_amount": "100", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "BTC", "pricing_decimal": 10, "trading_name": "XPR", "trading_decimal": 8}, "PSPUSDT": {"name": "PSPUSDT", "min_amount": "5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "PSP", "trading_decimal": 8}, "KAVAUSDT": {"name": "KAVAUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "KAVA", "trading_decimal": 8}, "CFXUSDT": {"name": "CFXUSDT", "min_amount": "10", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 6, "trading_name": "CFX", "trading_decimal": 8}}
df = {k: pd.json_normalize(v) for k, v in d.items()}
print (df['POLISUSDT'])
name min_amount maker_fee_rate taker_fee_rate pricing_name \
0 POLISUSDT 0.5 0.003 0.003 USDT
pricing_decimal trading_name trading_decimal
0 4 POLIS 8
请注意,我在解析您的 json 时发现了一些问题 - 在 message
字段之前有一个额外的 }
。
撇开这个不谈,如果你有 json 的 str
表示(我们称它为 json_str
),你可以使用以下方法将其加载到大数据帧中:
import pandas as pd
dt = pd.read_json(json_str).transpose()
在这部分代码中,您应该删除您不感兴趣的列。
您可以使用以下方式访问任何元素:
dt.loc[["POLISUSDT"]]
你可以这样做:
df = pd.DataFrame(data)
df_dict = {col: df[col].drop('name', axis=0).rename(None).to_frame().T for col in df.columns}
print(df_dict['POLISUSDT'])
输出:
min_amount maker_fee_rate taker_fee_rate pricing_name pricing_decimal trading_name trading_decimal
0 0.5 0.003 0.003 USDT 4 POLIS 8
trading_decimal
我有像这样的字符串形式的市场信息:
{"POLISUSDT": {"name": "POLISUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "POLIS", "trading_decimal": 8}, "XPRBTC": {"name": "XPRBTC", "min_amount": "100", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "BTC", "pricing_decimal": 10, "trading_name": "XPR", "trading_decimal": 8}, "PSPUSDT": {"name": "PSPUSDT", "min_amount": "5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "PSP", "trading_decimal": 8}, "KAVAUSDT": {"name": "KAVAUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "KAVA", "trading_decimal": 8}, "CFXUSDT": {"name": "CFXUSDT", "min_amount": "10", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 6, "trading_name": "CFX", "trading_decimal": 8}}
我想要每个市场的信息,分别。例如,如果我调用“POLISUSDT”,我想得到这个数据框:
min_amount | maker_fee_rate | taker_fee_rate | pricing_name | pricing_decimal | trading_name | trading_decimal |
---|---|---|---|---|---|---|
0.5 | 0.003 | 0.003 | USDT | 4 | POLIS | 8 |
在可以从示例中删除错误数据后,使用字典理解 json_normalize
:
d ={"POLISUSDT": {"name": "POLISUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "POLIS", "trading_decimal": 8}, "XPRBTC": {"name": "XPRBTC", "min_amount": "100", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "BTC", "pricing_decimal": 10, "trading_name": "XPR", "trading_decimal": 8}, "PSPUSDT": {"name": "PSPUSDT", "min_amount": "5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "PSP", "trading_decimal": 8}, "KAVAUSDT": {"name": "KAVAUSDT", "min_amount": "0.5", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 4, "trading_name": "KAVA", "trading_decimal": 8}, "CFXUSDT": {"name": "CFXUSDT", "min_amount": "10", "maker_fee_rate": "0.003", "taker_fee_rate": "0.003", "pricing_name": "USDT", "pricing_decimal": 6, "trading_name": "CFX", "trading_decimal": 8}}
df = {k: pd.json_normalize(v) for k, v in d.items()}
print (df['POLISUSDT'])
name min_amount maker_fee_rate taker_fee_rate pricing_name \
0 POLISUSDT 0.5 0.003 0.003 USDT
pricing_decimal trading_name trading_decimal
0 4 POLIS 8
请注意,我在解析您的 json 时发现了一些问题 - 在 message
字段之前有一个额外的 }
。
撇开这个不谈,如果你有 json 的 str
表示(我们称它为 json_str
),你可以使用以下方法将其加载到大数据帧中:
import pandas as pd
dt = pd.read_json(json_str).transpose()
在这部分代码中,您应该删除您不感兴趣的列。
您可以使用以下方式访问任何元素:
dt.loc[["POLISUSDT"]]
你可以这样做:
df = pd.DataFrame(data)
df_dict = {col: df[col].drop('name', axis=0).rename(None).to_frame().T for col in df.columns}
print(df_dict['POLISUSDT'])
输出:
min_amount maker_fee_rate taker_fee_rate pricing_name pricing_decimal trading_name trading_decimal
0 0.5 0.003 0.003 USDT 4 POLIS 8
trading_decimal