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

Đặt hoặc thay thế giá trị trong các cột khung dữ liệu dựa trên các cột khác thông qua HashMap

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 20:53:14 25 4
mua khóa gpt4 Nike

Tôi cần đặt giá trị của một cột trong khung dữ liệu dựa trên các cột khác thông qua HashMap. Tôi không thể làm cho nó hoạt động với các câu trả lời hiện có. Hy vọng một số lập trình viên tốt bụng có thể giúp tôi.

Tôi có một df với một số cột. Tôi muốn thêm một cột mới với các giá trị dựa trên một số cột hiện có khác. Giá trị sẽ được đặt theo HashMap.

Đây là HashMap được tạo từ khung dữ liệu; chỉ mục là một bộ dữ liệu:

Material_code_map = dict([((a,b,c),i) for i, a,b,c in zip(df.Material,
df.Height,
df.Pole_Class,
df.Điều trị)])

Sau đó, tôi có một df với các cột như Vật liệu, Chiều cao, Pole_Class, v.v. Trong df, tôi muốn thêm cột "Vật liệu", trong đó "Vật liệu" được lấy từ bản đồ dựa trên một bộ dữ liệu (Chiều cao, Cực_Class, Phương pháp xử lý).

Mã kiểm tra sau đây hoạt động:

đã làm sạch = đã làm sạch.gán ( Material_Number=lambda x: x.Pole_Class + x.Pole_Length )        
được làm sạch = được làm sạch.gán( Material_Number=lambda x: Material_code_map[(30, 6, 'PENTA')] )

Tuy nhiên, mã này có vẻ giống như bước tiếp theo rõ ràng nhưng nó không hoạt động:

được làm sạch = được làm sạch.gán ( Material_Number=lambda x: Material_code_map[(x.Pole_Length, x.Pole_Class, 'PENTA')] ) 

Tôi nhận được lỗi:

TypeError: Các đối tượng 'Sê-ri' có thể thay đổi được, do đó chúng không thể được băm

Cảm ơn đã giúp tôi giải quyết vấn đề này.

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

Cuối cùng tôi đã tìm ra giải pháp và tôi sẽ chia sẻ nó ở đây phòng trường hợp nó hữu ích với những người khác như tôi. Tôi sử dụng mã đơn giản hơn và tập trung vào cú pháp. d là bảng ánh xạ (từ điển), df là bảng chứa cột A và cột C thêm các giá trị dựa trên A và B thông qua ánh xạ d.

Trong [12]: d
Ra[12]: {(1, 1): 1, (1, 2): 2, (1, 3): 3, (1, 4): 4}

Trong [13]: df
Ra [13]:
AB
0 1 2
1 11 22
2 1 3
3 1111 2222

Trong [14]: df['C'] = df[['A','B']].apply(tuple, axis=1).map(d)

Trong [15]: df
Ra [15]:
ABC
0 1 2 2.0
1 11 22 NaN
2 1 3 3.0
3 1111 2222 NaN

Nó cũng hoạt động với các chuỗi, như tôi cần trong ví dụ của mình:

Trong [23]: d
Ra[23]: {(1, 'a'): 1, (1, 'b'): 2, (1, 'c'): 3, (1, 'd'): 4}

Trong [24]: df
Ra [24]:
AB
0 1 một
1 11 22
2 1 c
3 1111 2222

Trong [25]: df['C'] = df[['A','B']].apply(tuple, axis=1).map(d)

Trong [26]: df
Ra [26]:
ABC
0 1 một 1.0
1 11 22 NaN
2 1 c 3.0
3 1111 2222 NaN

Trong [27]:

Về python - cài đặt hoặc thay thế các giá trị trong cột khung dữ liệu dựa trên các cột khác thông qua HashMap, 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/56177261/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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