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

Tìm tên của n cột có giá trị cao nhất (khác 0) trong mỗi hàng khung dữ liệu gấu trúc

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

Giả sử tôi có một khung dữ liệu như thế này

id p1 p2 p3 p4  
1 0 9 0 4
2 0 0 0 4
3 1 3 10 7
4 1 5 3 1
5 2 3 7 10

Muốn tìm tên cột của n cột có giá trị cao nhất trong mỗi hàng khung dữ liệu gấu trúc và muốn loại trừ các giá trị 0 khỏi 3 giá trị đầu tiên.

id top1 top2 top3
1 p2 p4
2 p4
3 p3 p4 p2
4 p2 p3 p4/p1
5 p4 p3 p2

Giải pháp hiện tại cũng trả về tên cột bằng 0. Có cách nào để loại trừ giá trị bằng không. Có giải pháp này

arank = df.apply(np.argsort, axis = 1)
xếp hạng_cols = df.columns.to_series()[arank.values[:,::-1][:,:3]]
new_df = pd.DataFrame(ranked_cols, index=df.index)

Có những giải pháp khác như Tìm tên của các cột có giá trị cao nhất trong mỗi hàng khung dữ liệu gấu trúc .Có thể sửa đổi những điều này để loại trừ các cột có giá trị bằng 0 không?

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

Bạn cần đặt hàng lại giá trị theo tên cột ,TRONG 0 Thay thế bằng mặt nạlà một chuỗi rỗng:

df = df.set_index('id')

k = 3
vals = df.values
mảng1 = np.argsort(-vals, axis=1)

print (vals[np.arange(len(df.index))[:,None], arr1][:,:k])
[[ 9 4 0]
[4 0 0]
[10 7 3]
[5 3 1]
[10 7 3]]

a = df.columns[arr1[:,:k]]
mặt nạ = vals[np.arange(len(df.index))[:,None], arr1][:,:k] == 0
in (mặt nạ)
[[Sai Sai Đúng]
[Sai Đúng Đúng]
[Sai Sai Sai]
[Sai Sai Sai]
[Sai Sai Sai]]

result = pd.DataFrame(a, columns=['top{}'.format(i) for i in range(1, k+1)],
chỉ mục=df.index)

result = result.mask(mask, '')
in (kết quả)
đỉnh1 đỉnh2 đỉnh3
NHẬN DẠNG
1 p2 p4
2 p4
3 p3 p4 p2
4 p2 p3 p1
5 p4 p3 p2

Về python - tìm tên của n cột có giá trị cao nhất (khác 0) trong mỗi hàng khung dữ liệu gấu trúc, 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/43568381/

30 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