2017-03-04 4 views
0

Unten ist JSON von einer Web-API. Ich möchte es in einen Python Pandas Tabular Datenrahmen laden, so dass ich in Python schwenken kann.Json zu Panda Tabelle in Python

Ich bin fest, die JSON zu lesen. Ich bin nicht in der Lage, das json-Format in ein Tabellenformat zu übersetzen.

Bitte helfen Sie mir mit einem Ausgangspunkt. Ich habe in meiner Python 3.6-Shell viele JSON-zu-Tabular-Videos ohne Erfolg gesehen.

Wie lade ich JSON in eine pandas.DataFrame?

Unten ist die json-Format von Web-API:

{"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"} 

Antwort

1

Ihr Problem ist, dass Ihre Tabellendaten innerhalb eines einen Schlüssel. Ich nehme an, Sie dies wünschen:

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

dass die json parst richtig und legt den Schlüssel als Spaltennamen und die Werte als Spaltenwert.

Dies funktioniert:

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

Hallo Elelias, Vielen Dank für Ihre Antwort, aber ich erhalte "Typeerror: String-Indizes müssen ganze Zahlen sein" mit folgenden Code: sales_df = pd.DataFrame (url [ 'Salesdata']) –

+0

Ich habe den Code mit dem obigen Beispiel getestet und es funktioniert für mich. Siehe meine Bearbeitung. – elelias

+0

Das ist definitiv richtige Antwort von @elelias –

Verwandte Themen