Làm thế nào để bạn sắp xếp hai tiêu chí trong python?

Để bắt đầu hiểu cách sắp xếp đúng các khung dữ liệu trong

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
0, tất nhiên trước tiên chúng ta phải tạo một khung dữ liệu để thao tác

# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe

Ghi chú. Khoảng cách là không cần thiết, nhưng nó cải thiện mức độ dễ đọc

Việc thực thi tập lệnh

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
1 của chúng tôi sẽ xuất ra danh sách các vectơ trong khung dữ liệu của chúng tôi như mong đợi, theo thứ tự chúng được nhập

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1

Chức năng đặt hàng

Mặc dù có lẽ không phải là phương pháp sắp xếp dễ dàng nhất để gõ theo cú pháp, nhưng phương pháp sẵn có nhất cho mọi cài đặt của

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
0, do là một phần của mô-đun
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
3, là hàm
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
4

Hàm

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
4 chấp nhận một số đối số, nhưng ở mức đơn giản nhất, đối số đầu tiên phải là một chuỗi các giá trị hoặc vectơ logic

Ví dụ: chúng ta có thể sử dụng

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
6 để sắp xếp một vectơ gồm năm số được sắp xếp ngẫu nhiên bằng tập lệnh này

# Create unordered vector
vector = c(2, 5, 1, 3, 4)

# Print vector
vector

# Sort in ascending order
vector[order(vector)]

Thực thi tập lệnh, chúng ta thấy đầu ra ban đầu của vectơ không có thứ tự, tiếp theo là danh sách được sắp xếp theo thứ tự sau đó

# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe
0

Sắp xếp khung dữ liệu theo tên vectơ

Với chức năng

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
6 trong vành đai công cụ của chúng tôi, chúng tôi sẽ bắt đầu sắp xếp khung dữ liệu của mình bằng cách chuyển các tên vectơ trong khung dữ liệu

Ví dụ: sử dụng đối tượng

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
8 đã tạo trước đây của chúng tôi, chúng tôi có thể sắp xếp theo vectơ
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
9 bằng cách thêm đoạn mã sau vào tập lệnh của chúng tôi

# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe
4

Những gì chúng tôi đang làm một cách hiệu quả là gọi đối tượng

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
8 ban đầu của chúng tôi và chuyển vào thứ tự chỉ mục mới mà chúng tôi muốn có. Thứ tự chỉ mục này được tạo bằng cách sử dụng hàm
# Create unordered vector
vector = c(2, 5, 1, 3, 4)

# Print vector
vector

# Sort in ascending order
vector[order(vector)]
1, giúp tạo môi trường mới một cách hiệu quả bằng cách sử dụng dữ liệu được truyền vào trong đối số đầu tiên cùng với một biểu thức để đánh giá dữ liệu đó trong đối số thứ hai

Do đó, chúng tôi đang đánh giá lại dữ liệu

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
8 bằng cách sử dụng hàm
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
6 và chúng tôi muốn sắp xếp thứ tự dựa trên vectơ
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
9 trong khung dữ liệu đó. Điều này trả về một thứ tự chỉ mục mới cho các giá trị khung dữ liệu, sau đó được đánh giá cuối cùng trong [dấu ngoặc] của
# Create unordered vector
vector = c(2, 5, 1, 3, 4)

# Print vector
vector

# Sort in ascending order
vector[order(vector)]
5, xuất ra kết quả được sắp xếp mới của chúng tôi

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
1

Do đó, chúng tôi thấy đầu ra ban đầu không có thứ tự, tiếp theo là đầu ra thứ hai với dữ liệu được sắp xếp theo cột

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
9

Sắp xếp theo chỉ mục cột

Tương tự như phương pháp trên, cũng có thể sắp xếp dựa trên số

# Create unordered vector
vector = c(2, 5, 1, 3, 4)

# Print vector
vector

# Sort in ascending order
vector[order(vector)]
7 của một cột trong khung dữ liệu, thay vì tên cụ thể

Thay vì sử dụng hàm

# Create unordered vector
vector = c(2, 5, 1, 3, 4)

# Print vector
vector

# Sort in ascending order
vector[order(vector)]
1, chúng ta chỉ cần chuyển hàm
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
6 sang hàm
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
8 của mình. Chúng tôi chỉ ra rằng chúng tôi muốn sắp xếp theo cột của chỉ mục
# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe
01 bằng cách sử dụng cú pháp
# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe
02, khiến cho
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
0 trả về các mức (tên) của cột
# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe
01 của chỉ mục đó. Nói cách khác, tương tự như khi chúng ta chuyển tên vectơ
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
9 ở trên,
$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
4 đang sắp xếp dựa trên các giá trị vectơ nằm trong cột của chỉ mục
# run.R
# Generate data frame
dataframe <- data.frame(
  x = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1)
)

# Print data frame
dataframe
01

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
4

Như mong đợi, chúng tôi nhận được đầu ra bình thường theo sau là đầu ra được sắp xếp trong cột đầu tiên

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
5

Sắp xếp theo nhiều cột

Trong một số trường hợp, có thể muốn sắp xếp theo nhiều cột. Rất may, làm như vậy rất đơn giản với các phương pháp được mô tả trước đây

Để sắp xếp nhiều cột bằng cách sử dụng tên vectơ, chỉ cần thêm các đối số bổ sung vào lệnh gọi hàm

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
6 như trước đây

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
7

Tương tự, để sắp xếp theo nhiều cột dựa trên chỉ mục cột, hãy thêm các đối số bổ sung vào

$ Rscript run.R
           x y z
1      apple a 4
2     orange d 3
3     banana b 2
4 strawberry c 1
6 với các chỉ số khác nhau