我有一個已經展平的類別串列,但不確定如何將其轉換為如下例所示的表格。因此,如果 a has children 等于 false 那么這將是我的 id,然后如果 has children 是 true 我將得到名稱等等。我認為可以通過回圈類別串列來完成
"response": {
"category_list": [
{
"category_id": 100017,
"parent_category_id": 0,
"name": "Women Clothes",
"has_children": true
},
{
"category_id": 100118,
"parent_category_id": 100017,
"name": "Socks & Stockings",
"has_children": true
},
{
"category_id": 100419,
"parent_category_id": 100118,
"name": "Others",
"has_children": false
},
{
"category_id": 100418,
"parent_category_id": 100118,
"name": "Pantyhose",
"has_children": false
},
{
"category_id": 100417,
"parent_category_id": 100118,
"name": "Socks",
"has_children": false
}
]
}
所以結果應該是這樣的:
| ID | 類別 1 | 類別 2 | 類別 3 | 類別 4 |
|---|---|---|---|---|
| 100419 | 女裝 | 襪子和絲襪 | 其他 | |
| 100417 | 女裝 | 襪子和絲襪 | 連褲襪 | |
| 100418 | 女裝 | 襪子和絲襪 | 襪子 |
uj5u.com熱心網友回復:
你有很多東西沒有向我們展示。您的樣本資料都恰好有兩個父項。那是通用的嗎?會有一個父母嗎?三?
這會產生您想要的結果并且應該處理任意祖先。
import json
from pprint import pprint
rawinp = """\
{
"response": {
"category_list": [
{
"category_id": 100017,
"parent_category_id": 0,
"name": "Women Clothes",
"has_children": true
},
{
"category_id": 100118,
"parent_category_id": 100017,
"name": "Socks & Stockings",
"has_children": true
},
{
"category_id": 100419,
"parent_category_id": 100118,
"name": "Others",
"has_children": false
},
{
"category_id": 100418,
"parent_category_id": 100118,
"name": "Pantyhose",
"has_children": false
},
{
"category_id": 100417,
"parent_category_id": 100118,
"name": "Socks",
"has_children": false
}
]
}
}"""
data = json.loads(rawinp)
parents = {}
rows = []
for row in data["response"]["category_list"]:
if row["has_children"]:
if row["parent_category_id"]:
parents[row["category_id"]] = parents[row["parent_category_id"]] [row["name"]]
else:
parents[row["category_id"]] = [row["name"]]
else:
rows.append([row["category_id"]] parents[row["parent_category_id"]] [row['name']])
pprint(rows)
輸出:
[[100419, 'Women Clothes', 'Socks & Stockings', 'Others'],
[100418, 'Women Clothes', 'Socks & Stockings', 'Pantyhose'],
[100417, 'Women Clothes', 'Socks & Stockings', 'Socks']]
uj5u.com熱心網友回復:
這是一個非常丑陋的熊貓解決方案。基本上,只需創建一個字典并parents逐一映射幾乎每一行children以獲得正確的類別。
df = pd.DataFrame(json_data['response']['category_list'])
parents = df[df['has_children']]
children = df[~df['has_children']].copy()
mapper = dict(parents[['category_id', 'name']].to_dict('split')['data'])
parent_relationship = dict(parents[['category_id','parent_category_id']].to_dict('split')['data'])
children['Category 1'] = parents['category_id'].map(parent_relationship).map(mapper).dropna().tolist()[0]
children['Category 2'] = children['parent_category_id'].map(mapper)
out = children.drop(['parent_category_id','has_children'], axis=1).rename({'category_id':'Id','name':'Category 3'}, axis=1)[['Id','Category 1','Category 2','Category 3']]
輸出:
Id Category 1 Category 2 Category 3
2 100419 Women Clothes Socks & Stockings Others
3 100418 Women Clothes Socks & Stockings Pantyhose
4 100417 Women Clothes Socks & Stockings Socks
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403344.html
標籤:
