Khi chọn một cột đơn từ DataFrame gấu trúc (giả sử df.iloc[:, 0]
, df['A']
hoặc df.A
, v.v.) Khung dữ liệu. Tuy nhiên, tôi đang viết một số hàm lấy DataFrame làm đối số đầu vào. Do đó, tôi thích xử lý với DataFrame một cột thay vì Series để hàm có thể giả định rằng df.columns có thể truy cập được. Ngay bây giờ tôi phải chuyển đổi một cách rõ ràng Series thành một DataFrame bằng cách sử dụng một cái gì đó như pd.DataFrame(df.iloc[:, 0])
. Điều này dường như không phải là phương pháp sạch nhất. Có một cách thanh lịch hơn để lập chỉ mục từ một DataFrame trực tiếp sao cho kết quả là một DataFrame một cột thay vì Series?pandas Python: Giữ cột được chọn làm DataFrame thay vì dòng
Trả lời
Như @ Jeff đề cập có một vài cách để làm điều này, nhưng tôi khuyên bạn nên sử dụng loc/iloc rõ ràng hơn (và nâng cao lỗi sớm nếu bạn cố gắng một cái gì đó mơ hồ):
In [10]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
In [11]: df
Out[11]:
A B
0 1 2
1 3 4
In [12]: df[['A']]
In [13]: df[[0]]
In [14]: df.loc[:, ['A']]
In [15]: df.iloc[:, [0]]
Out[12-15]: # they all return the same thing:
A
0 1
1 3
Sau hai lựa chọn loại bỏ sự mơ hồ trong trường hợp tên cột số nguyên (chính xác là tại sao loc/iloc được tạo ra). Ví dụ:
In [16]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 0])
In [17]: df
Out[17]:
A 0
0 1 2
1 3 4
In [18]: df[[0]] # ambiguous
Out[18]:
A
0 1
1 3
Xin lỗi vì đã làm phiền bạn, nhưng chỉ là một câu hỏi thực sự nhanh chóng xung quanh vấn đề này. Tôi thấy cách thêm '[]' làm cho kết quả là một 'DataFrame' thay vì một' Series', nhưng ở đâu trong tài liệu gấu trúc là kiểu cú pháp lập chỉ mục này được thảo luận? Tôi chỉ cố gắng lấy tên "chính thức" cho kỹ thuật lập chỉ mục này để tôi thực sự hiểu nó. Cám ơn! –
@sparc_spread http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics "Bạn có thể chuyển danh sách các cột vào [] để chọn cột theo thứ tự đó". Tôi không chắc chắn nếu điều này có một tên! –
Có vẻ như nó không có - nhưng tôi sẽ tiếp tục sử dụng nó từ bây giờ. Tuyệt vời bao nhiêu thứ được chôn trong cả API và tài liệu. Cám ơn! –
- 1. Pandas DataFrame giá trị cập nhật Cột với DataFrame khác
- 2. Kết hợp Pandas DataFrame DateTime Cột
- 3. Pandas: Tạo cột tổng hợp trong DataFrame
- 4. pandas Python: chọn các cột có tất cả các mục 0 trong dataframe
- 5. Python Pandas: Chuyển đổi dòng như tiêu đề cột
- 6. Pandas DataFrame Áp dụng
- 7. Tùy chọn Autoincrementing cho Pandas DataFrame index
- 8. Dataframe Merge in Pandas
- 9. Làm thế nào để chuyển một cột trong Pandas DataFrame
- 10. Py Pandas .format (dataframe)
- 11. Slice Pandas DataFrame by Row
- 12. Làm việc với set_index trong Pandas DataFrame
- 13. Pandas: Lấy mẫu DataFrame
- 14. Pandas: dataframe duy nhất
- 15. pandas DataFrame pivoting issue
- 16. Pandas thứ bậc dataframe
- 17. Cách cập nhật có điều kiện cột DataFrame trong Pandas
- 18. Xóa DataFrame hàng trong Pandas dựa trên giá trị cột
- 19. Pandas HDFStore tải dataframe từ bộ nhớ
- 20. Lựa chọn hàng ngẫu nhiên trong Pandas dataframe
- 21. Áp dụng chức năng trên Pandas dataframe
- 22. Rẽ Pandas DataFrame các chuỗi vào histogram
- 23. Pandas viết dataframe vào tệp CSV
- 24. Pandas DataFrame concat vs chắp thêm
- 25. 'CSV không tồn tại' - Pandas DataFrame
- 26. Sắp xếp dữ liệu đọc từ Excel sang Pandas DataFrame
- 27. Python Pandas - Sắp xếp lại các cột trong một khung dữ liệu dựa trên tên cột
- 28. Làm thế nào để lưu trữ công thức, thay vì giá trị, trong gấu trúc DataFrame
- 29. Pandas DataFrame cắt theo ngày/giờ/phút
- 30. Làm thế nào để chuyển đổi Wikipedia wikitable sang Python Pandas DataFrame?
df.iloc [:, [0]] hoặc df [['A']]; df.A chỉ sẽ trả lại một chuỗi tuy nhiên – Jeff