@bogatron nói đúng, bạn có thể sử dụng where
, cần lưu ý rằng bạn có thể thực hiện điều này một cách tự nhiên ở gấu trúc:
df1 = df.where(pd.notnull(df), None)
Lưu ý: điều này thay đổi loại của tất cả các cột thành object
.
Thí dụ:
In [1]: df = pd.DataFrame([1, np.nan])
In [2]: df
Out[2]:
0
0 1
1 NaN
In [3]: df1 = df.where(pd.notnull(df), None)
In [4]: df1
Out[4]:
0
0 1
1 None
Lưu ý: những gì bạn không thể làm là viết lại DataFrame dtype
để cho phép tất cả các loại kiểu dữ liệu, sử dụng astype
và sau đó là fillna
phương thức DataFrame :
df1 = df.astype(object).replace(np.nan, 'None')
Thật không may, không phải điều này, cũng không sử dụng replace
, hoạt động với None
xem vấn đề này (đã đóng) .
Ngoài ra, cần lưu ý rằng đối với hầu hết các trường hợp sử dụng, bạn không cần thay thế NaN bằng Không, hãy xem câu hỏi này về sự khác biệt giữa NaN và Không có ở gấu trúc .
Tuy nhiên, trong trường hợp cụ thể này có vẻ như bạn làm (ít nhất là tại thời điểm câu trả lời này).
None
choNULL
thay vìnan
?