Vì vậy, bộ dữ liệu của tôi có một số thông tin theo ngày kinh doanh n ngày dưới đây:
Business Date Value
a 1/1/2017 127
a 2/1/2017 89
b 2/1/2017 122
a 1/1/2018 555
a 2/1/2018 455
Tôi cần dữ liệu này như định dạng dưới đây: Làm thế nào tôi có thể xử lý nó. Và tôi không muốn đa cấp trong bộ dữ liệu đầu ra của mình
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
Tôi đã thử dưới đây cú pháp:
df = df.set_index[['Business','Date']]['Value'].unstack[]
df=df.pivot[index='Business', columns='Date', values='Value']
Tôi có đầu ra như dưới đây:
Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
Khi tôi in các cột, nó không hiển thị lob dưới dạng cột. DataFrame cuối cùng của tôi cũng nên bao gồm các trường kinh doanh, ngày làm cột để tôi có thể tham gia DataFrame này với một DataFrame khác trên doanh nghiệp
Sử dụng thuộc tính
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
4 hoặc phương thức Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
5 để hoán đổi [= chuyển vị] các hàng và cột của Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
6.Cả hai phương thức đều không thay đổi đối tượng gốc nhưng trả về một đối tượng mới với các hàng và cột hoán đổi [= đối tượng chuyển vị].
Lưu ý rằng tùy thuộc vào loại dữ liệu
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
7 của mỗi cột, chế độ xem được tạo thay vì một bản sao và thay đổi một trong các đối tượng gốc và được chuyển sẽ thay đổi khác.Bài viết này mô tả các nội dung sau đây.
8Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
9Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
- Thay đổi chính đối tượng ban đầu
- Loại chuyển đổi
- Xem và sao chép
Nếu tất cả các cột có cùng loại dữ liệu,
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
4 hoặc Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
5 trả về chế độ xem. Vì các đối tượng gốc và các đối tượng Chế độ xem chia sẻ bộ nhớ, việc thay đổi một phần tử sẽ thay đổi phần khác.
1Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
- Nếu kiểu dữ liệu
7 khác nhau cho mỗi cột,Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
4 vàBusiness 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
5 sẽ tạo một bản sao. Vì đối tượng được chuyển đổi phân bổ một vùng bộ nhớ mới, nếu một khu vực được thay đổi, thì cái còn lại không thay đổi.Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
8
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
- Nếu bạn muốn xử lý riêng đối tượng gốc và đối tượng được chuyển một cách riêng biệt khi tất cả các cột có cùng loại dữ liệu: sử dụng
2 để tạo rõ ràng một bản sao vớiimport pandas as pd df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']] print[df] # X Y # A 0 3 # B 1 4 # C 2 5 print[df.T] # A B C # X 0 1 2 # Y 3 4 5
4 và đặt tham sốBusiness 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
4 thànhimport pandas as pd df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']] print[df] # X Y # A 0 3 # B 1 4 # C 2 5 print[df.T] # A B C # X 0 1 2 # Y 3 4 5
5 để tạo bản sao vớiimport pandas as pd df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']] print[df] # X Y # A 0 3 # B 1 4 # C 2 5 print[df.T] # A B C # X 0 1 2 # Y 3 4 5
5.Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
import pandas as pd
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
9
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
3Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018 a 127 89 555 455 b N/A 122 N/A N/A
print[df.transpose[]]
# A B C
# X 0 1 2
# Y 3 4 5
Thay đổi chính đối tượng ban đầu
Loại chuyển đổi
df = df.T
print[df]
# A B C
# X 0 1 2
# Y 3 4 5
Loại chuyển đổi
Xem các bài viết sau đây để chuyển
df = df.set_index[['Business','Date']]['Value'].unstack[]
df=df.pivot[index='Business', columns='Date', values='Value']
0 hoặc df = df.set_index[['Business','Date']]['Value'].unstack[]
df=df.pivot[index='Business', columns='Date', values='Value']
1 hai chiều [danh sách danh sách].Numpy: Chuyển vị Ndarray [hàng và cột, trục sắp xếp lại]
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.dtypes]
# X int64
# Y int64
# dtype: object
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
print[df.T.dtypes]
# A int64
# B int64
# C int64
# dtype: object
Nếu mỗi cột có một loại dữ liệu khác nhau, loại được chuyển đổi. Ví dụ: nếu một cột chứa cả số nguyên
df = df.set_index[['Business','Date']]['Value'].unstack[]
df=df.pivot[index='Business', columns='Date', values='Value']
9 và số điểm nổi Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
0, loại dữ liệu của cột là Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
0.df_mix = pd.DataFrame[{'col_int': [0, 1, 2], 'col_float': [0.1, 0.2, 0.3]}, index=['A', 'B', 'C']]
print[df_mix]
# col_int col_float
# A 0 0.1
# B 1 0.2
# C 2 0.3
print[df_mix.dtypes]
# col_int int64
# col_float float64
# dtype: object
print[df_mix.T]
# A B C
# col_int 0.0 1.0 2.0
# col_float 0.1 0.2 0.3
print[df_mix.T.dtypes]
# A float64
# B float64
# C float64
# dtype: object
Nó sẽ không được khôi phục nếu nó được chuyển đổi một lần nữa. Bạn nên áp dụng
Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
2 để đúc kiểu dữ liệu.print[df_mix.T.T]
# col_int col_float
# A 0.0 0.1
# B 1.0 0.2
# C 2.0 0.3
print[df_mix.T.T.dtypes]
# col_int float64
# col_float float64
# dtype: object
Kiểu dữ liệu của một cột chứa chuỗi
Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
3 là Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
4.
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
0Để biết thêm thông tin về các loại dữ liệu
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
7 và Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
2, hãy xem bài viết sau.- Pandas: Cast DataFrame đến một DTYPE cụ thể với ASTYPE []
Xem và sao chép
Nếu tất cả các cột có cùng loại dữ liệu,
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
4 hoặc Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
5 trả về chế độ xem. Vì các đối tượng gốc và các đối tượng Chế độ xem chia sẻ bộ nhớ, việc thay đổi một phần tử sẽ thay đổi phần khác.Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
1Nếu kiểu dữ liệu
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
7 khác nhau cho mỗi cột, Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
4 và Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
5 sẽ tạo một bản sao. Vì đối tượng được chuyển đổi phân bổ một vùng bộ nhớ mới, nếu một khu vực được thay đổi, thì cái còn lại không thay đổi.Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
2Nếu bạn muốn xử lý riêng đối tượng gốc và đối tượng được chuyển một cách riêng biệt khi tất cả các cột có cùng loại dữ liệu: sử dụng
import pandas as pd
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
2 để tạo rõ ràng một bản sao với Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
4 và đặt tham số import pandas as pd
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
4 thành import pandas as pd
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
5 để tạo bản sao với Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
5.Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
3Giá trị mặc định của
import pandas as pd
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
4 trong Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
5 là import pandas as pd
df = pd.DataFrame[{'X': [0, 1, 2], 'Y': [3, 4, 5]}, index=['A', 'B', 'C']]
print[df]
# X Y
# A 0 3
# B 1 4
# C 2 5
print[df.T]
# A B C
# X 0 1 2
# Y 3 4 5
9, tạo ra chế độ xem thay vì một bản sao nếu có thể. Nếu loại dữ liệu Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
7 khác nhau cho mỗi cột, như trong ví dụ trên, một bản sao được tạo ngay cả khi print[df.transpose[]]
# A B C
# X 0 1 2
# Y 3 4 5
1.