Làm phẳng danh sách từ điển Python Pandas
gấu trúc thật tuyệt. Bạn có thể làm khá nhiều thứ với nó. từ làm sạch dữ liệu đến dữ liệu nhanh viz. Làm việc với từ điển lồng nhau từ tệp json thì sao? Show gấu trúc. json_normalize có thể thực hiện hầu hết công việc cho bạn (hầu hết thời gian). Tuy nhiên, json_normalize bị chậm khi bạn muốn làm phẳng một tệp json lớn. Ngoài ra, nó làm phẳng toàn bộ từ điển khi mục tiêu của bạn thực sự có thể là xây dựng khung dữ liệu của riêng bạn bằng cách trích xuất các khóa và giá trị đã chọn Làm thế nào bạn có thể làm điều đó? . bóng tối. Xem bên dưới hướng dẫn từng bước Đầu tiên, lấy dữ liệu. Đây là một từ điển lồng nhau đơn giản từ một tệp json mẫu Thứ hai, nhập các thư viện python và nhập dữ liệu của chúng tôi (tôi. e. từ điển lồng nhau) vào một cột duy nhất của khung dữ liệu gấu trúc Lưu ý1. ngoài ('Given array:\n', [{'Mon': 2}, {'Tue': 11}, {'Wed': 3}]) ('Type of Object:\n', ) ('Flattened object:\n ', {'Wed': 3, 'Mon': 2, 'Tue': 11}) ('Type of flattened Object:\n', )0 để chuyển đổi biểu diễn chuỗi của từ điển thành từ điển python (thuần túy) Lưu ý 2. từ điển được lưu trữ dưới dạng một chuỗi Thứ ba, trích xuất các khóa đã chọn và các giá trị tương ứng từ từ điển lồng nhau bằng cách sử dụng ('Given array:\n', [{'Mon': 2}, {'Tue': 11}, {'Wed': 3}]) ('Type of Object:\n', ) ('Flattened object:\n ', {'Wed': 3, 'Mon': 2, 'Tue': 11}) ('Type of flattened Object:\n', )2 và chúng tôi lưu giá trị của nó vào một cột riêng biệt có cùng tên trong khung dữ liệu pandas Việc sử dụng cơ bản của glom yêu cầu hai đối số chính. (i) dữ liệu và (ii) đường dẫn đến các khóa có giá trị mà chúng tôi muốn trích xuất và ghi vào khung dữ liệu. Để biết thêm thông tin và sử dụng trước, hãy xem hướng dẫn về glom trong tài liệu;) Ở đây chúng tôi đã tạo một hàm python không sử dụng bất kỳ gói phụ thuộc nào để làm phẳng từ điển python. Các tham số được truyền cho hàm flatten_dict() là từ điển mà bạn muốn làm phẳng Chúng tôi có một danh sách có các phần tử là từ điển. Chúng ta cần làm phẳng nó để có được một từ điển duy nhất trong đó tất cả các phần tử danh sách này hiện diện dưới dạng các cặp khóa-giá trị Với cho và cập nhậtChúng tôi lấy một từ điển trống và thêm các phần tử vào đó bằng cách đọc các phần tử từ danh sách. Việc bổ sung các phần tử được thực hiện bằng chức năng cập nhật Ví dụBản thử trực tiếp listA = [{'Mon':2}, {'Tue':11}, {'Wed':3}] # printing given arrays print("Given array:\n",listA) print("Type of Object:\n",type(listA)) res = {} for x in listA: res.update(x) # Result print("Flattened object:\n ", res) print("Type of flattened Object:\n",type(res)) đầu raChạy đoạn mã trên cho chúng ta kết quả sau - ('Given array:\n', [{'Mon': 2}, {'Tue': 11}, {'Wed': 3}]) ('Type of Object:\n', ) ('Flattened object:\n ', {'Wed': 3, 'Mon': 2, 'Tue': 11}) ('Type of flattened Object:\n', ) với giảmChúng ta cũng có thể sử dụng hàm rút gọn cùng với hàm cập nhật để đọc các phần tử từ danh sách và thêm nó vào từ điển trống Ví dụBản thử trực tiếp from functools import reduce listA = [{'Mon':2}, {'Tue':11}, {'Wed':3}] # printing given arrays print("Given array:\n",listA) print("Type of Object:\n",type(listA)) # Using reduce and update res = reduce(lambda d, src: d.update(src) or d, listA, {}) # Result print("Flattened object:\n ", res) print("Type of flattened Object:\n",type(res)) đầu raChạy đoạn mã trên cho chúng ta kết quả sau - ('Given array:\n', [{'Mon': 2}, {'Tue': 11}, {'Wed': 3}]) ('Type of Object:\n', ) ('Flattened object:\n ', {'Wed': 3, 'Mon': 2, 'Tue': 11}) ('Type of flattened Object:\n', ) Với ChainMapHàm ChainMap sẽ đọc từng phần tử trong danh sách và tạo đối tượng bộ sưu tập mới chứ không phải từ điển giả sử tôi có DataFrame sau
Tôi đang cố trích xuất tất cả các văn bản vào một cột duy nhất như vậy
Tôi nghĩ rằng giải pháp liên quan đến json_normalize. Tôi đã thử như sau
Nhưng nó mang lại kết quả sau
bất kỳ cách Pythonic nào để xử lý việc này? Bạn có thể làm phẳng một từ điển bằng Python không?Trong bài đăng này, chúng ta đã thấy 4 cách khác nhau để làm phẳng từ điển trong Python . Mỗi giải pháp đều có ưu và nhược điểm, và việc lựa chọn giải pháp tốt nhất là vấn đề sở thích cá nhân và những ràng buộc của dự án.
Làm cách nào để chuyển đổi danh sách từ điển thành danh sách danh sách trong Python?Sử dụng Hàm map()
. Để tạo danh sách các danh sách, ánh xạ hàm list() trên tất cả các thành phần của từ điển. mặt hàng().
Làm cách nào để chuyển đổi danh sách từ điển thành từ điển đơn trong Python?Phương pháp 2. Vòng lặp lồng nhau đơn giản . Tạo một từ điển mới, trống Đi qua từng từ điển trong danh sách từ điển Đi qua từng cặp (khóa, giá trị) trong từ điển hiện tại Thêm cặp (khóa, giá trị) vào từ điển mới—có thể ghi đè các khóa “cũ” bằng từ điển hiện tại |