以下のデータを持っていて、集計機能を適用してからgroupbyを適用する必要があります。次のようにpandas Seriesを希望のJSON形式に変換するには?
私のデータは次のとおりです。data.csv
id,category,sub_category,count
0,x,sub1,10
1,x,sub2,20
2,x,sub2,10
3,y,sub3,30
4,y,sub3,5
5,y,sub4,15
6,z,sub5,20
ここ
私は賢いサブカテゴリー別の数を取得しようとしています。その後、結果をJSON形式で保存する必要があります。次のコードはそれを達成するのに役立ちます。 test.py
import pandas as pd
df = pd.read_csv('data.csv')
sub_category_total = df['count'].groupby([df['category'], df['sub_category']]).sum()
print sub_category_total.reset_index().to_json(orient = "records")
上記のコードは次の形式を示します。次のように私の目的の形式がある
[{"category":"x","sub_category":"sub1","count":10},{"category":"x","sub_category":"sub2","count":30},{"category":"y","sub_category":"sub3","count":35},{"category":"y","sub_category":"sub4","count":15},{"category":"z","sub_category":"sub5","count":20}]
しかし、:
{
"x":[{
"sub_category":"sub1",
"count":10
},
{
"sub_category":"sub2",
"count":30}],
"y":[{
"sub_category":"sub3",
"count":35
},
{
"sub_category":"sub4",
"count":15}],
"z":[{
"sub_category":"sub5",
"count":20}]
}
をHow to convert pandas DataFrame result to user defined json format @議論に従うことで、私は、と
g = df.groupby('category')[["sub_category","count"]].apply(lambda x: x.to_dict(orient='records'))
print g.to_json()
をtest.py
の最後の2行を置き換えそれは私を与えます次の出力。
{"x":[{"count":10,"sub_category":"sub1"},{"count":20,"sub_category":"sub2"},{"count":10,"sub_category":"sub2"}],"y":[{"count":30,"sub_category":"sub3"},{"count":5,"sub_category":"sub3"},{"count":15,"sub_category":"sub4"}],"z":[{"count":20,"sub_category":"sub5"}]}
上記の結果は、私の目的の形式に似ていますが、それはを言って、エラーがスローされますよう、私はここの上に任意の集計関数を実行することができませんでした。したがって、データファイルのすべての行を取得することになります。
上記のJSON形式の達成に誰か助けてくれますか?
私は二回投票しようとしました...それは私を許さないでしょう。 – piRSquared
ありがとうございます。 Btw、非常に良い[質問](http://meta.stackoverflow.com/questions/323414/incentivizing-people-to-avoid-gamesmanship)。 ;) – jezrael
うわー!素晴らしい!どうもありがとう@jezrael :) –