我從 URL 中提取了 JSON 資料。結果是一本字典。如何將此字典轉換為資料框,以便 AdrActCnt 和 AdrBal1in100KCnt 是列,而時間是每個值的索引。
提前致謝
{"data":[
{"asset":"btc","time":"2009-01-04T00:00:00.00000000Z","AdrActCnt":"10","AdrBal1in100KCnt":"145"},
{"asset":"btc","time":"2009-01-05T00:00:00.00000000Z","AdrActCnt":"30","AdrBal1in100KCnt":"152"},
{"asset":"btc","time":"2009-01-06T00:00:00.00000000Z","AdrActCnt":"50","AdrBal1in100KCnt":"136"}
]}
time----------------------------------------AdrActCnt---------AdrBal1in100KCnt
2009-01-04T00:00:00.00000000Z------------------10-------------------145
2009-01-05T00:00:00.00000000Z------------------30-------------------152
2009-01-06T00:00:00.00000000Z------------------50-------------------136
uj5u.com熱心網友回復:
我會試試這個:
我會確保我使用的是最新的 python 版本之一,因為字典中的排序或資料源結構可以更改,我最好為此代碼添加字典和串列的排序。
import pandas as pd
obj = {"data":[
{"asset":"btc","time":"2009-01-04T00:00:00.00000000Z","AdrActCnt":"10","AdrBal1in100KCnt":"145"},
{"asset":"btc","time":"2009-01-05T00:00:00.00000000Z","AdrActCnt":"30","AdrBal1in100KCnt":"152"},
{"asset":"btc","time":"2009-01-06T00:00:00.00000000Z","AdrActCnt":"50","AdrBal1in100KCnt":"136"}
]}
def value(obj, keys):
for dicit in obj["data"]:
values = [
value
for key, value in dicit.items()
if key in keys
]
yield values
keys = ["time", "AdrActCnt", "AdrBal1in100KCnt"]
df = pd.DataFrame(
data=[x for x in value(obj, keys)]
, columns=keys
)
print(df)
輸出:
time AdrActCnt AdrBal1in100KCnt
0 2009-01-04T00:00:00.00000000Z 10 145
1 2009-01-05T00:00:00.00000000Z 30 152
2 2009-01-06T00:00:00.00000000Z 50 136
如果字典可以隨機排序(未排序),或者我想確保它已排序,那么我將嘗試以下示例:
### Another sort
keys = ["AdrBal1in100KCnt", "AdrActCnt", "time"]
def value(obj, keys):
for dictis in obj["data"]:
listed = [dictis[x] for x in keys]
yield listed
df = pd.DataFrame(
data=[x for x in value(obj, keys)]
, columns=keys
)
print(df)
輸出:
AdrBal1in100KCnt AdrActCnt time
0 145 10 2009-01-04T00:00:00.00000000Z
1 152 30 2009-01-05T00:00:00.00000000Z
2 136 50 2009-01-06T00:00:00.00000000Z
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/398304.html
上一篇:如何使用matplotlib中的2個串列在其上繪制一條線和點?[復制]
下一篇:從列中的串列中洗掉重復項
