Tìm các giá trị duy nhất trong một cột và sau đó sắp xếp chúng


82

Tôi có một khung dữ liệu gấu trúc. Tôi muốn in các giá trị duy nhất của một trong các cột của nó theo thứ tự tăng dần. Đây là cách tôi đang làm:

import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()

Vấn đề là tôi đang nhận được một Noneđầu ra.


4
a.sort()Sửa avà không trả lại bất cứ điều gì để thay thế bằng:a.sort(); print a
stellasia

Câu trả lời:


120

sortedtrả về một danh sách được sắp xếp mới từ các mục có thể lặp lại.


import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print sorted(a)

ĐẦU RA

[1, 2, 3, 6, 8]

19

sort sắp xếp tại chỗ để không trả về:

In [54]:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
a.sort()
a

Out[54]:
array([1, 2, 3, 6, 8], dtype=int64)

Vì vậy, bạn phải gọi print alại sau cuộc gọi tới sort.

Ví dụ.:

In [55]:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
a.sort()
print(a)

[1 2 3 6 8]

11

Bạn cũng có thể sử dụng drop_duplicates () thay vì unique ()

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a

3
Được drop_duplicates()phát hiện là nhanh hơn 3 lần so với unique () trên khung dữ liệu gồm 14107693 hàng [Pandas 0.18]
fixxxer

7

Tôi thích oneliner hơn:

print(sorted(df['Column Name'].unique()))

6

Tôi đã đi qua câu hỏi hôm nay. Tôi nghĩ rằng lý do mà mã của bạn trả về 'Không có' (chính xác là những gì tôi nhận được bằng cách sử dụng cùng một phương pháp) là

a.sort()

đang gọi hàm sắp xếp để thay đổi danh sách a. Theo hiểu biết của tôi, đây là một lệnh sửa đổi. Để xem kết quả, bạn phải sử dụng print (a).

Giải pháp của tôi, khi tôi cố gắng giữ mọi thứ trong gấu trúc:

pd.Series(df['A'].unique()).sort_values()

Tôi thích pandasgiải pháp này vì nó đặt NaNcác giá trị ở cuối và hoạt động với các mảng có kiểu hỗn hợp.
HS-nebula

4

Tôi sẽ đề xuất sử dụng loại của numpy, vì dù sao thì đó cũng là những gì gấu trúc đang làm trong nền:

import numpy as np
np.sort(df.A.unique())

Nhưng làm tất cả với gấu trúc cũng hợp lệ.


0

Một cách khác là sử dụng kiểu dữ liệu tập hợp .

Một số đặc điểm của Tập hợp : Tập hợp không có thứ tự, có thể bao gồm các kiểu dữ liệu hỗn hợp, các phần tử trong tập hợp không thể lặp lại, có thể thay đổi.

Giải quyết câu hỏi của bạn:

df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))

Câu trả lời trong loại Danh sách :

[1, 2, 3, 6, 8]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.