Tôi muốn biết liệu có cách nào thay thế tất cả các số âm của DataFrame bằng số không?Làm cách nào để thay thế số âm trong Khung dữ liệu Pandas theo số không
20
A
Trả lời
30
Nếu tất cả các cột của bạn là số, bạn có thể sử dụng boolean lập chỉ mục:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': [0, -1, 2], 'b': [-3, 2, 1]})
In [3]: df
Out[3]:
a b
0 0 -3
1 -1 2
2 2 1
In [4]: df[df < 0] = 0
In [5]: df
Out[5]:
a b
0 0 0
1 0 2
2 2 1
Đối với trường hợp tổng quát hơn, this answer cho thấy phương pháp riêng _get_numeric_data
:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': [0, -1, 2], 'b': [-3, 2, 1],
'c': ['foo', 'goo', 'bar']})
In [3]: df
Out[3]:
a b c
0 0 -3 foo
1 -1 2 goo
2 2 1 bar
In [4]: num = df._get_numeric_data()
In [5]: num[num < 0] = 0
In [6]: df
Out[6]:
a b c
0 0 0 foo
1 0 2 goo
2 2 1 bar
Với kiểu timedelta
, lập chỉ mục boolean dường như hoạt động trên các cột riêng biệt, b ut không phải trên toàn bộ khung dữ liệu. Vì vậy, bạn có thể làm:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': pd.to_timedelta([0, -1, 2], 'd'),
...: 'b': pd.to_timedelta([-3, 2, 1], 'd')})
In [3]: df
Out[3]:
a b
0 0 days -3 days
1 -1 days 2 days
2 2 days 1 days
In [4]: for k, v in df.iteritems():
...: v[v < 0] = 0
...:
In [5]: df
Out[5]:
a b
0 0 days 0 days
1 0 days 2 days
2 2 days 1 days
Cập nhật: so sánh với một pd.Timedelta
công trình trên toàn bộ DataFrame:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame({'a': pd.to_timedelta([0, -1, 2], 'd'),
...: 'b': pd.to_timedelta([-3, 2, 1], 'd')})
In [3]: df[df < pd.Timedelta(0)] = 0
In [4]: df
Out[4]:
a b
0 0 days 0 days
1 0 days 2 days
2 2 days 1 days
4
lẽ bạn có thể sử dụng pandas.where(args)
như vậy:
data_frame = data_frame.where(data_frame < 0, 0)
13
Một cách ngắn gọn khác để thực hiện việc này là pandas.DataFrame.clip.
Ví dụ:
import pandas as pd
In [20]: df = pd.DataFrame({'a': [-1, 100, -2]})
In [21]: df
Out[21]:
a
0 -1
1 100
2 -2
In [22]: df.clip(lower=0)
Out[22]:
a
0 0
1 100
2 0
Ngoài ra còn có df.clip_lower(0)
.
Các vấn đề liên quan
- 1. Các số NaN khi trừ các khung dữ liệu pandas
- 2. Làm cách nào để thay đổi nhãn hàng cụ thể trong khung dữ liệu Pandas?
- 3. pandas DataFrame "không có dữ liệu số để vẽ" lỗi
- 4. Pandas: Merge khung dữ liệu về chỉ số datetime
- 5. Làm cách nào để thay đổi giá trị chỉ mục của khung dữ liệu Pandas?
- 6. pandas python cách đếm số lượng bản ghi hoặc hàng trong một khung dữ liệu
- 7. Làm thế nào để thay thế các giá trị với None trong khung dữ liệu Pandas bằng Python?
- 8. Làm thế nào để tạo ra một khung dữ liệu của các số nguyên ngẫu nhiên với Pandas?
- 9. Làm thế nào để thay thế chuỗi bằng số dựa trên vị trí trong một khung dữ liệu?
- 10. Chia nhỏ một khung dữ liệu theo số hàng
- 11. Làm cách nào để xoay vòng một khung dữ liệu trong Pandas?
- 12. Làm cách nào để kết hợp hai cột trong một khung dữ liệu trong Pandas?
- 13. Làm thế nào để thả danh sách các hàng từ khung dữ liệu Pandas?
- 14. Làm cách nào để sắp xếp lại một khung dữ liệu pandas python?
- 15. Số lượng bản ghi hàng ngày trung bình trong một Khung dữ liệu Pandas
- 16. Pandas: vạch âm mưu tần số xtick
- 17. Làm thế nào để chuyển đổi toàn bộ khung dữ liệu thành số trong khi vẫn giữ số thập phân?
- 18. Thay đổi số chỉ mục của một khung dữ liệu
- 19. Làm cách nào để tách một khung dữ liệu theo tiêu chí boolean?
- 20. Tôi làm cách nào để đặt một khung dữ liệu theo cột thứ hai trong R?
- 21. Làm thế nào để chuyển đổi một khung dữ liệu của yếu tố thành số?
- 22. Khung Pandas liệu Vẽ
- 23. Hiển thị khung dữ liệu Pandas dưới dạng bảng
- 24. Cách hiệu quả để tăng số điểm dữ liệu duy nhất trong khung dữ liệu
- 25. Thay thế các số trong cột khung dữ liệu trong R?
- 26. Pandas khung dữ liệu từ điển
- 27. Làm cách nào để tải tệp tsv vào Khung dữ liệu Pandas?
- 28. Làm thế nào để phân tích tất cả các mục trùng lặp trong khung dữ liệu Pandas này?
- 29. Làm cách nào để thêm hàng vào khung dữ liệu có tổng số?
- 30. Phụ thêm vào khung dữ liệu trống trong Pandas?
Ngoài ra, tôi tin dòng thứ hai của bạn nên đọc 'num [num <0] = 0' – hlin117