Tôi đang làm việc với các tệp CSV trong đó một số cột có một đối tượng JSON đơn giản [một số cặp giá trị chính] trong khi các cột khác là bình thường. Đây là một ví dụ:
name,dob,stats
john smith,1/1/1980,"{""eye_color"": ""brown"", ""height"": 160, ""weight"": 76}"
dave jones,2/2/1981,"{""eye_color"": ""blue"", ""height"": 170, ""weight"": 85}"
bob roberts,3/3/1982,"{""eye_color"": ""green"", ""height"": 180, ""weight"": 94}"
Sau khi sử dụng
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
3, cách hiệu quả nhất để phân tích và chia cột import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
4 thành các cột bổ sung là gì?Sau khoảng một giờ, điều duy nhất tôi có thể nghĩ ra là:
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
Điều này có vẻ như tôi đang làm sai, và nó khá nhiều công việc khi xem xét tôi sẽ cần phải làm điều này trên ba cột thường xuyên.
Đầu ra mong muốn là đối tượng DataFrame bên dưới. Đã thêm các dòng mã sau để đạt được điều đó theo cách [crappy] của tôi:
df = df.join[pandas.read_json[stjson]]
del[df['stats']]
In [14]: df
Out[14]:
name dob eye_color height weight
0 john smith 1/1/1980 brown 160 76
1 dave jones 2/2/1981 blue 170 85
2 bob roberts 3/3/1982 green 180 94
JSON [ký hiệu đối tượng JavaScript] là một định dạng dữ liệu phổ biến được sử dụng để biểu diễn dữ liệu có cấu trúc. Thông thường việc truyền và nhận dữ liệu giữa một máy chủ và ứng dụng web ở định dạng JSON.JavaScript Object Notation] is a popular data format used for representing structured data. It's common to transmit and receive data between a server and web application in JSON format.
Trong Python, JSON tồn tại như một chuỗi. Ví dụ:
p = '{"name": "Bob", "languages": ["Python", "Java"]}'
Nó cũng phổ biến để lưu trữ một đối tượng JSON trong một tệp.
Nhập mô -đun JSON
Để làm việc với JSON [chuỗi hoặc tệp chứa đối tượng JSON], bạn có thể sử dụng mô -đun
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
5 của Python. Bạn cần nhập mô -đun trước khi bạn có thể sử dụng nó.import json
Parse json trong Python
Mô -đun
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
5 giúp dễ dàng phân tích các chuỗi và tệp JSON có chứa đối tượng JSON.Ví dụ 1: Python JSON & NBSP; To Dict
Bạn có thể phân tích chuỗi JSON bằng phương thức
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
7. Phương pháp trả về một từ điển.import json
person = '{"name": "Bob", "languages": ["English", "French"]}'
person_dict = json.loads[person]
# Output: {'name': 'Bob', 'languages': ['English', 'French']}
print[ person_dict]
# Output: ['English', 'French']
print[person_dict['languages']]
Ở đây, người là một chuỗi JSON, và Person_dict là một từ điển.
Ví dụ 2: Python đọc tệp JSON
Bạn có thể sử dụng phương thức
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
8 để đọc một tệp có chứa đối tượng JSON.Giả sử, bạn có một tệp có tên
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
9 có chứa đối tượng JSON.
{"name": "Bob",
"languages": ["English", "French"]
}
Đây là cách bạn có thể phân tích tệp này:
import json
with open['path_to_file/person.json', 'r'] as f:
data = json.load[f]
# Output: {'name': 'Bob', 'languages': ['English', 'French']}
print[data]
Ở đây, chúng tôi đã sử dụng chức năng
df = df.join[pandas.read_json[stjson]]
del[df['stats']]
In [14]: df
Out[14]:
name dob eye_color height weight
0 john smith 1/1/1980 brown 160 76
1 dave jones 2/2/1981 blue 170 85
2 bob roberts 3/3/1982 green 180 94
0 để đọc tệp JSON. Sau đó, tệp được phân tích cú pháp bằng phương pháp import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
8 cung cấp cho chúng ta dữ liệu từ điển có tên.Nếu bạn không biết cách đọc và ghi các tệp trong Python, chúng tôi khuyên bạn nên kiểm tra I/O File I/O của Python.
Python chuyển đổi sang chuỗi JSON
Bạn có thể chuyển đổi một từ điển thành chuỗi JSON bằng phương thức
df = df.join[pandas.read_json[stjson]]
del[df['stats']]
In [14]: df
Out[14]:
name dob eye_color height weight
0 john smith 1/1/1980 brown 160 76
1 dave jones 2/2/1981 blue 170 85
2 bob roberts 3/3/1982 green 180 94
2.Ví dụ 3: Chuyển đổi dict thành json
import json
person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps[person_dict]
# Output: {"name": "Bob", "age": 12, "children": null}
print[person_json]
Đây là một bảng hiển thị các đối tượng Python và chuyển đổi tương đương của chúng sang JSON.
3 | sự vật |
4, 5 | mảng |
6 | sợi dây |
7, 8, 7 | con số |
0 | thật |
1 | sai |
2 | vô giá trị |
Viết JSON vào một tập tin
Để viết JSON vào một tệp trong Python, chúng ta có thể sử dụng phương thức
p = '{"name": "Bob", "languages": ["Python", "Java"]}'
3.Ví dụ 4: Viết JSON vào một tệp
import json
person_dict = {"name": "Bob",
"languages": ["English", "French"],
"married": True,
"age": 32
}
with open['person.txt', 'w'] as json_file:
json.dump[person_dict, json_file]
Trong chương trình trên, chúng tôi đã mở một tệp có tên
p = '{"name": "Bob", "languages": ["Python", "Java"]}'
4 ở chế độ viết bằng cách sử dụng p = '{"name": "Bob", "languages": ["Python", "Java"]}'
5. Nếu tệp chưa tồn tại, nó sẽ được tạo. Sau đó, p = '{"name": "Bob", "languages": ["Python", "Java"]}'
3 biến đổi p = '{"name": "Bob", "languages": ["Python", "Java"]}'
7 thành chuỗi JSON sẽ được lưu trong tệp p = '{"name": "Bob", "languages": ["Python", "Java"]}'
4.Khi bạn chạy chương trình, tệp
p = '{"name": "Bob", "languages": ["Python", "Java"]}'
4 sẽ được tạo. Các tập tin có văn bản sau bên trong nó.import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
0Python in đẹp json
Để phân tích và gỡ lỗi dữ liệu JSON, chúng ta có thể cần in nó ở định dạng dễ đọc hơn. Điều này có thể được thực hiện bằng cách chuyển các tham số bổ sung
import json
0 và import json
1 cho phương thức df = df.join[pandas.read_json[stjson]]
del[df['stats']]
In [14]: df
Out[14]:
name dob eye_color height weight
0 john smith 1/1/1980 brown 160 76
1 dave jones 2/2/1981 blue 170 85
2 bob roberts 3/3/1982 green 180 94
2 và p = '{"name": "Bob", "languages": ["Python", "Java"]}'
3.Ví dụ 5: Python Print Print Json
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
1Khi bạn chạy chương trình, đầu ra sẽ là:
import json
stdf = df['stats'].apply[json.loads]
stlst = list[stdf]
stjson = json.dumps[stlst]
df.join[pandas.read_json[stjson]]
2Trong chương trình trên, chúng tôi đã sử dụng không gian
import json
4 để thụt vào. Và, các phím được sắp xếp theo thứ tự tăng dần.Nhân tiện, giá trị mặc định của thụt lề là
p = '{"name": "Bob", "languages": ["Python", "Java"]}'
2. Và, giá trị mặc định của sort_keys là p = '{"name": "Bob", "languages": ["Python", "Java"]}'
1.Bài đọc được đề xuất:
- Python JSON đến CSV và ngược lại
- Python XML đến JSON và ngược lại
- Python Simplejson