第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Pandas Python 搜索 JSON 列表

Pandas Python 搜索 JSON 列表

慕村9548890 2023-05-09 09:33:19
我有一個(gè) JSON 文件結(jié)構(gòu)化列表,所以:[ {   "name": "first",   "points": 0.5,   "tags": [{      "key": "Owner",      "value": "A"   }] }, {   "name": "first",   "points": 1.5,   "tags": [{      "key": "Owner",      "value": "B"   }] }, {   "name": "first",   "points": 24,   "tags": [{      "key": "SomeOtherTag",      "value": "XYZ"   }] }]我想加載這個(gè) JSON 數(shù)組,然后過濾特定key: value標(biāo)簽并計(jì)算points. 例如,過濾這個(gè)“主”列表,然后Owner: A計(jì)算應(yīng)該給我結(jié)果的點(diǎn)數(shù)0.5我知道如何計(jì)算點(diǎn)數(shù),items.points.sum()但我正在努力按標(biāo)簽鍵/值進(jìn)行過濾。這是我到目前為止所擁有的:import pandas as pditems = pd.read_json('all_items.json')# Do something to filter down the listfiltered_items = ?????print(filtered_items.points.sum())根據(jù) Rob 的解決方案進(jìn)行編輯:#pipenv install pandas# pandas = 1.1.0import pandas as pditems = pd.read_json('all_items.json')pd.json_normalize(items, record_path="tags", meta=[['name'], ['points']])給TypeError: string indices must be integers。
查看完整描述

3 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用json_normalize


df = pd.io.json.json_normalize(s)

print(df)


? ? name? points? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?tags

0? first? ? ?0.5? ? ? ? ? ?[{'key': 'Owner', 'value': 'A'}]

1? first? ? ?1.5? ? ? ? ? ?[{'key': 'Owner', 'value': 'B'}]

2? first? ? 24.0? [{'key': 'SomeOtherTag', 'value': 'XYZ'}]


# to filter

filter_mask = df['tags'].apply(lambda x: x[0]['value'] == 'A')

df.loc[filter_mask, "points"].sum()


查看完整回答
反對(duì) 回復(fù) 2023-05-09
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果您不嚴(yán)格使用 Pandas,另一種方法是對(duì)生成器理解求和,假設(shè)tags每行列表中只嵌入一個(gè)字典:

sum(entry["points"] for entry in data if entry["tags"][0]["value"] == "A")
0.5


查看完整回答
反對(duì) 回復(fù) 2023-05-09
?
長(zhǎng)風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

json_normalize()為你做這一切


js = [{'name': 'first', 'points': 0.5, 'tags': [{'key': 'Owner', 'value': 'A'}]},

 {'name': 'first', 'points': 1.5, 'tags': [{'key': 'Owner', 'value': 'B'}]},

 {'name': 'first',

  'points': 24,

  'tags': [{'key': 'SomeOtherTag', 'value': 'XYZ'}]}]



pd.json_normalize(js, record_path="tags", meta=[['name'], ['points']])


輸出


          key value   name points

        Owner     A  first    0.5

        Owner     B  first    1.5

 SomeOtherTag   XYZ  first     24

補(bǔ)充更新

如果從文件中讀取


import json

with open('all_items.json') as f: items = json.load(f)


pd.json_normalize(items, record_path="tags", meta=[['name'], ['points']])


查看完整回答
反對(duì) 回復(fù) 2023-05-09
  • 3 回答
  • 0 關(guān)注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)