2017-03-04 6 views
0

以下はWeb APIのjsonです。私はそれをpython pandas tabular dataframeにロードして、私がPythonでピボットできるようにしたいと思います。PythonのJson to Pandaテーブル

私はjsonを読んでいません。私はjson形式を表形式に変換できませんでした。

出発点をお手伝いください。私はPython 3.6 Shellで多くのjson to tabular videosを見てきました。

pandas.DataFrameにjsonをロードするにはどうすればよいですか?

以下のWeb APIからJSON形式は次のとおりです。

{"success": true,"SalesData" :[ { "InvoiceNo":"S42694","ReceiptNo":"SR39258","GuestName":"ABC Ed","GuestCode":"","SoldOn":"2014-04-07 12:17:48","ServicedOn":"2014-04-07 10:00:00","ItemType":"0","ItemCode":"HS00018","ServiceName":"Wash & Blow - Dry Long Hair","Quantity":"1","UnitPrice":"90","SalePrice":"90","Discount":"0","ServiceTax":"11.24","TotalTax":"11.24","TaxCode":"abc_Service Tax_svc","LoyaltyPointRedemption":"0","MembershipRedemption":"0","PrepaidCardRedemption":"0","CashbackRedemption":"0","PackageRedemption":"0","Cash":"0","Card":"1012","Check":"0","Custom":"0","Points":"0","MembershipPaid":"0","PrepaidCard":"0","CenterCode":"","LastPaymentDate":"2014-04-07 12:20:28","InvoiceItemId":"1d41a266-e2a2-4c40-89c0-35d0e57cd83d","RoundingAdjustment":"0.76","Tips":"0","EmployeeName":"ABC FG","EmployeeCode":"7","EmployeeJobCode":"J0001","Tags":"","GuestId":"7d11090e-c330-4ec3-937c-98fe5139062b","FinalSalePrice":"101.24","Promotion":"","CouponPrinted":"","FirstVisit":"No","Package":"","PackageInvoice":"","CenterName":"ABC","Due":"0","PaymentType":"Visa","BUName":"brick"}, { "InvoiceNo":"S42695","ReceiptNo":"SR39264","GuestName":"ABC XYZ","GuestCode":"","SoldOn":"2014-04-07 12:30:30","ServicedOn":"2014-04-07 10:00:00","ItemType":"0","ItemCode":"SS00162","ServiceName":"Mica","Quantity":"1","UnitPrice":"50","SalePrice":"50","Discount":"100","ServiceTax":"4.44","TotalTax":"4.44","TaxCode":"Gurgaon_Service Tax_svc","LoyaltyPointRedemption":"0","MembershipRedemption":"0","PrepaidCardRedemption":"0","CashbackRedemption":"0","PackageRedemption":"0","Cash":"0","Card":"449.4741","Check":"0","Custom":"0","Points":"0","MembershipPaid":"0","PrepaidCard":"0","CenterCode":"","LastPaymentDate":"2014-04-07 14:08:26","InvoiceItemId":"4f501646-9619-4677-86d6-44bf376e3959","RoundingAdjustment":"0.0341840592193034","Tips":"0","EmployeeName":"ABC","EmployeeCode":"12345","EmployeeJobCode":"J0009","Tags":"","GuestId":"abd3695f-efd0-4a9e-9692-91eb6ce84c3b","FinalSalePrice":"449.44","Promotion":"Campaign: Campaign: ABC connection - non facial service (20% off)","CouponPrinted":"","FirstVisit":"No","Package":"","PackageInvoice":"","CenterName":"ABC","Due":"0","PaymentType":"Visa","BUName":"Brick"} 

答えて

1

あなたの問題は、あなたの表形式のデータがキー内部にあるということです。

sales_df = pd.DataFrame(your_json_dict['SalesData']) 

これは、jsonを正しく解析し、キーを列名として、値を列の値として配置します。

これは動作します:

j = {"success": "true","SalesData" :[ { "InvoiceNo":"S42694","ReceiptNo":"SR39258","GuestName":"ABC Ed","GuestCode":"","SoldOn":"2014-04-07 12:17:48","ServicedOn":"2014-04-07 10:00:00","ItemType":"0","ItemCode":"HS00018","ServiceName":"Wash & Blow - Dry Long Hair","Quantity":"1","UnitPrice":"90","SalePrice":"90","Discount":"0","ServiceTax":"11.24","TotalTax":"11.24","TaxCode":"abc_Service Tax_svc","LoyaltyPointRedemption":"0","MembershipRedemption":"0","PrepaidCardRedemption":"0","CashbackRedemption":"0","PackageRedemption":"0","Cash":"0","Card":"1012","Check":"0","Custom":"0","Points":"0","MembershipPaid":"0","PrepaidCard":"0","CenterCode":"","LastPaymentDate":"2014-04-07 12:20:28","InvoiceItemId":"1d41a266-e2a2-4c40-89c0-35d0e57cd83d","RoundingAdjustment":"0.76","Tips":"0","EmployeeName":"ABC FG","EmployeeCode":"7","EmployeeJobCode":"J0001","Tags":"","GuestId":"7d11090e-c330-4ec3-937c-98fe5139062b","FinalSalePrice":"101.24","Promotion":"","CouponPrinted":"","FirstVisit":"No","Package":"","PackageInvoice":"","CenterName":"ABC","Due":"0","PaymentType":"Visa","BUName":"brick"}, { "InvoiceNo":"S42695","ReceiptNo":"SR39264","GuestName":"ABC XYZ","GuestCode":"","SoldOn":"2014-04-07 12:30:30","ServicedOn":"2014-04-07 10:00:00","ItemType":"0","ItemCode":"SS00162","ServiceName":"Mica","Quantity":"1","UnitPrice":"50","SalePrice":"50","Discount":"100","ServiceTax":"4.44","TotalTax":"4.44","TaxCode":"Gurgaon_Service Tax_svc","LoyaltyPointRedemption":"0","MembershipRedemption":"0","PrepaidCardRedemption":"0","CashbackRedemption":"0","PackageRedemption":"0","Cash":"0","Card":"449.4741","Check":"0","Custom":"0","Points":"0","MembershipPaid":"0","PrepaidCard":"0","CenterCode":"","LastPaymentDate":"2014-04-07 14:08:26","InvoiceItemId":"4f501646-9619-4677-86d6-44bf376e3959","RoundingAdjustment":"0.0341840592193034","Tips":"0","EmployeeName":"ABC","EmployeeCode":"12345","EmployeeJobCode":"J0009","Tags":"","GuestId":"abd3695f-efd0-4a9e-9692-91eb6ce84c3b","FinalSalePrice":"449.44","Promotion":"Campaign: Campaign: ABC connection - non facial service (20% off)","CouponPrinted":"","FirstVisit":"No","Package":"","PackageInvoice":"","CenterName":"ABC","Due":"0","PaymentType":"Visa","BUName":"Brick"}]} 

df = pd.DataFrame(j['SalesData']) 
+0

こんにちはElelias、ご回答いただきありがとうございます、しかし、私が得る "TypeError例外を:文字列のインデックスは整数でなければなりません":sales_df = pd.DataFrame(URL [ 'SALESDATA']次のコードで) –

+0

私は上の例でコードをテストし、それは私のために働く。私の編集を参照してください。 – elelias

+0

それは@eleliasから正解です。 –