私は列を持つデータフレームからのデータがあるとid
、title
とcategory
、subcategory
と、sub-subcategory
そのルックスは次のように:
_________________________________________________________________
| id | title | cat | subcat | subsubcat |
|____|______________|______________|_____________|______________|
| 1 | My Book | cat1 | subcat1 | subsubcat1 |
| 1 | My Book | cat2 | subcat2 | subsubcat2 |
| 2 | My Other Book| othercat1 | othersubcat1| othersubcat1 |
| 2 | My Other Book| othercat2 | othersubcat2| null |
| 2 | My Other Book| othercat3 | null | null |
|_______________________________________________________________|
これを次のような構造を持つ(改行で区切られた)jsonに変換したいと思います。
[
{
'id' : '1',
'title' : 'My Book',
'categoryHiearchies': [
{'categories': ['category1', 'subcategory1', 'sub-subcategory1']},
{'categories': ['category2', 'subcategory2', 'sub-subcategory2']}
]
},
{
'id' : '2',
'title' : 'My Other Book',
'categoryHiearchies': [
{'categories': ['othercategory1', 'othersubcategory1', 'othersub-subcategory1']},
{'categories': ['othercategory2', 'othersubcategory2']},
{'categories': ['othercategory3']},
]
}
]
BigQueryに適切にアップロードするため。
この変換を適用する方法について何かアイデアはありますか?
値が次のようになってnull
いると仮定しNan
ます。
(df.set_index(['id','title'],append=True).stack()
.groupby(level=[0,1,2]).agg(lambda x: {'categories':list(x)})
.groupby(level=[1,2]).agg(list)
.reset_index(name='categoryHiearchies')
.to_json(orient='records', indent=2)
)
これは
[
{
"id":1,
"title":"My Book",
"categoryHiearchies":[
{
"categories":[
"cat1",
"subcat1",
"subsubcat1"
]
},
{
"categories":[
"cat2",
"subcat2",
"subsubcat2"
]
}
]
},
{
"id":2,
"title":"My Other Book",
"categoryHiearchies":[
{
"categories":[
"othercat1",
"othersubcat1",
"othersubcat1"
]
},
{
"categories":[
"othercat2",
"othersubcat2"
]
},
{
"categories":[
"othercat3"
]
}
]
}
]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加