Tôi cảm thấy như đây là một câu hỏi thô sơ nhưng tôi rất mới với câu hỏi này và chỉ không thể bẻ khóa / tìm câu trả lời.
Cuối cùng, điều tôi đang cố gắng làm ở đây là đếm các giá trị duy nhất trên một cột nhất định và sau đó xác định giá trị nào trong số các giá trị duy nhất đó có nhiều hơn một giá trị duy nhất trong một cột khớp.
Vì vậy, đối với dữ liệu này, điều tôi đang cố gắng xác định là "ai" có "nhiều hơn một biên nhận" cho tất cả các giao dịch mua, sau đó xác định cùng một thông tin dựa trên từng loại sản phẩm.
Cách tiếp cận của tôi cho đến nay:
Chúng tôi có một bộ dữ liệu như thế này:
receipt,name,etc,category
1,george,xxx,fish
1,george,xxx,cat
2,george,xxx,fish
3,bill,xxx,fish
3,bill,xxx,dog
4,jill,xxx,cat
5,bill,xxx,cat
5,bill,xxx,cat
5,bill,xxx,dog
6,george,xxx,fish
Vì vậy, sau đó tôi có thể làm điều này:
df.set_index(['name','receipt'])
Và nhận được nhiều thú vị hơn
etc category
name receipt
george 1 xxx fish
1 xxx cat
2 xxx fish
bill 3 xxx fish
3 xxx dog
jill 4 xxx cat
bill 5 xxx cat
5 xxx cat
5 xxx dog
george 6 xxx fish
Tại thời điểm này, tôi cảm thấy dữ liệu rất dễ làm việc, nhưng tôi đã không tìm ra nó.
Một điều thú vị đối với tôi là nếu tôi sắp xếp dữ liệu theo tên trước khi lập chỉ mục, dữ liệu sẽ hiển thị được nhóm theo tên. Trong cả hai trường hợp, chỉ mục đều giống nhau, vì vậy tôi không biết cách chơi với biểu diễn dữ liệu sau khi lập chỉ mục.
Thật dễ dàng để tìm thấy dữ liệu theo thể loại bằng cách sử dụng
>>> orders.loc[orders['category'] == 'fish']
etc category
name receipt
george 1 xxx fish
2 xxx fish
bill 3 xxx fish
george 6 xxx fish
Nhưng điều tôi không thể tìm ra là làm thế nào để nói với gấu trúc "Tìm cho tôi danh sách các tên có nhiều hơn một lần nhận".
Câu hỏi nhỏ hơn:
- "Cách gấu trúc" để có được độ dài của phần tên của chỉ mục là gì? Tôi cho rằng tôi chỉ có thể biến
name
cột thành một tập hợp và có được độ dài của nó. Nhưng tôi tò mò về các chỉ số.
Chỉnh sửa / Cập nhật
Cảm ơn những câu trả lời! Dưới đây là làm rõ về những gì tôi đang tìm kiếm:
Tôi đang cố gắng tìm "khách hàng lặp lại": những người có nhiều hơn một hóa đơn.
Vì vậy, tập hợp tất cả khách hàng của tôi sẽ là:
names: ['george','bill','jill'], ratio: 1.0
Khách hàng lặp lại của tôi:
names: ['george','bill'], ratio 0.66
Tất cả khách hàng của 'cá':
names: ['george','bill'], ratio: 0.666
Khách hàng 'cá' lặp lại của tôi:
names: ['george'], ratio: 0.333
Tôi nghĩ rằng các ví dụ đưa ra có vẻ hữu ích, nhưng hãy thoải mái thêm bất cứ điều gì.