Ngạc nhiên là tôi chưa thấy bài này được đăng cho đến nay, vì vậy tôi sẽ để nó ở đây.
Giải nén mở rộng lặp lại (python3.5 +): [*df]
và bạn bè
Giải nén các khái quát hóa (PEP 448) đã được giới thiệu với Python 3.5. Vì vậy, các hoạt động sau đây là tất cả có thể.
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(5))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
Nếu bạn muốn một list
....
[*df]
# ['A', 'B', 'C']
Hoặc, nếu bạn muốn một set
,
{*df}
# {'A', 'B', 'C'}
Hoặc, nếu bạn muốn một tuple
,
*df, # Please note the trailing comma
# ('A', 'B', 'C')
Hoặc, nếu bạn muốn lưu trữ kết quả ở đâu đó,
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
... Nếu bạn là kiểu người chuyển đổi cà phê thành gõ âm thanh, thì điều này sẽ tiêu thụ cà phê của bạn hiệu quả hơn;)
PS: nếu hiệu suất là quan trọng, bạn sẽ muốn bỏ các giải pháp ở trên để ủng hộ
df.columns.to_numpy().tolist()
# ['A', 'B', 'C']
Điều này tương tự như câu trả lời của Ed Chum , nhưng được cập nhật cho v0.24, nơi .to_numpy()
được ưu tiên sử dụng .values
. Xem
câu trả lời này (bởi tôi) để biết thêm thông tin.
Kiểm tra trực quan
Vì tôi đã thấy điều này được thảo luận trong các câu trả lời khác, bạn có thể sử dụng giải nén lặp lại (không cần các vòng lặp rõ ràng).
print(*df)
A B C
print(*df, sep='\n')
A
B
C
Phê bình các phương pháp khác
Không sử dụng một for
vòng lặp rõ ràng cho một hoạt động có thể được thực hiện trong một dòng duy nhất (Việc hiểu danh sách là ổn).
Tiếp theo, sử dụng sorted(df)
không bảo toàn thứ tự ban đầu của các cột. Đối với điều đó, bạn nên sử dụng list(df)
thay thế.
Tiếp theo, list(df.columns)
và list(df.columns.values)
là những gợi ý kém (như phiên bản hiện tại, v0.24). Cả hai mảng (được trả Index
về từ df.columns
) và NumPy (được trả về bởi df.columns.values
) đều xác định .tolist()
phương thức nhanh hơn và thành ngữ hơn.
Cuối cùng, danh sách nghĩa là, list(df)
chỉ nên được sử dụng như là một thay thế ngắn gọn cho các phương pháp đã nói ở trên cho python <= 3,4 khi không giải nén được mở rộng.
columns
như một thuộc tính?