cuốn sách gpt4 ai đã làm

Tôi cần tách các phần tử mảng JSON và đảm bảo ánh xạ chính xác với cột 'ID'

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 04:44:19 28 4
mua khóa gpt4 Nike

DataFrame đầu vào "df" như sau (lưu ý giá trị trong cột 'id'):

| id | tên |
|-------|------------------------------------------------ -------------------------------------------------- |
| a1xy | [ { "sự kiện": "thể thao", "bắt đầu": "100"}, { "sự kiện": "bữa trưa", "bắt đầu": "121" } ] |
a7yz | [ { "sự kiện": "bữa trưa", "bắt đầu": "109"}, { "sự kiện": "phim", "bắt đầu": "97" } ] |
bx4y | [ { "sự kiện": "bữa tối", "bắt đầu": "78"}, { "sự kiện": "ngủ", "bắt đầu": "25" } ] |

Tôi muốn làm phẳng các phần tử mảng JSON để kết quả đầu ra của tôi là:

| id | tên.sự kiện |
|-------|-------------||-------------|
| thể thao 100 |
| ăn trưa |
| ăn trưa 109 |
| phim a7yz |
| bữa tối 78 |
|

Các giá trị trong cột "id" cần được ánh xạ chính xác. Làm cách nào để thực hiện việc này bằng Python?

我试过:

k = df.name.map(json.loads).apply(pd.DataFrame).tolist()
cuối cùng_df = pd.concat(k)

Nhưng tôi không thể ánh xạ giá trị trong cột "id".

câu trả lời hay nhất

Bạn có thể sử dụng tính năng hiểu danh sách, làm phẳng và chuyển NHẬN DẠNG value cập nhật từng từ điển và cuối cùng gọi Khung dữ liệu Người xây dựng:

df['name'] = df['name'].map(json.loads)

df = pd.DataFrame([dict(y, id=i) for i, x in zip(df['id'],df['name']) for y in x])
print (df)
bắt đầu id sự kiện
0 thể thao a1xy 100
1 bữa trưa a1xy 121
2 bữa trưa a7yz 109
3 phim a7yz 97
4 bữa tối bx4y 78
5 ngủ bx4y 25

Nhưng nếu đầu vào làjson, tốt nhất nên sử dụngjson_n normalize .

thời gian:

df=pd.DataFrame([
['a1xy',[{ "sự kiện": "thể thao", "bắt đầu": "100"}, { "sự kiện": "bữa trưa", "bắt đầu": "121" } ]],
['a7yz',[{ "sự kiện": "bữa trưa", "bắt đầu": "109"}, { "sự kiện": "phim", "bắt đầu": "97" } ]],
['bx4y',[{ "sự kiện": "bữa tối", "bắt đầu": "78"}, { "sự kiện": "ngủ", "bắt đầu": "25" } ]]],
cột=['id','name'])
print (df)

#3k hàng
df = pd.concat([df] * 1000, ign_index=True)

Trong [276]: %%timeit
...: pd.DataFrame([dict(y, id=i) for i, x in zip(df['id'],df['name']) for y in x])
9,49 ms ± 230 µs trên mỗi vòng lặp (trung bình ± std. dev. của 7 lần chạy, mỗi lần 100 vòng)

Trong [277]: %%timeit
...: cuối cùngArray=[]
...: df.apply(lambda x: addtoArray(x,finalArray),axis=1)
...: pd.DataFrame(finalArray,columns=['col1','event','start'])
...:
1,81 giây ± 33,9 ms mỗi vòng lặp (trung bình ± std. dev. của 7 lần chạy, mỗi lần 1 vòng lặp)

Giải pháp hiểu danh sách 180x Nhanh hơn.

Về python - Tôi cần tháo các phần tử mảng JSON và đảm bảo ánh xạ chính xác với cột 'ID', chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/49962533/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress