Hướng dẫn python float(nan to none) - python float (nan để không)

@Bogatron có đúng, bạn có thể sử dụng

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
1, điều đáng chú ý là bạn có thể làm điều này trong gấu trúc:
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
1
, it's worth noting that you can do this natively in pandas:

Show
df1 = df.where(pd.notnull(df), None)

Lưu ý: Điều này thay đổi DTYPE của tất cả các cột thành

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
2.all columns to
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
2.

Example:

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ại DataFrames

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
3 để cho phép tất cả các loại dữ liệu, sử dụng
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
4 và sau đó là phương thức DataFrame
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
5:
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
4
, and then the DataFrame
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
5
method:

df1 = df.astype(object).replace(np.nan, 'None')

Thật không may, cả điều này, cũng không sử dụng

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
6, hoạt động với
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 Xem vấn đề này (đã đóng).
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
6
, works with
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 see this (closed) issue.


Bên cạnh đó, điều đáng chú ý là đố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ì trong Pandas.the difference between NaN and None in pandas.

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).

Khi nói đến sự cố dữ liệu, xử lý các giá trị bị thiếu là một nhiệm vụ không thể tránh khỏi. Không giống như các ngôn ngữ lập trình phổ biến khác, chẳng hạn như Java và C ++, Python không sử dụng từ khóa

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
8. Thay vào đó, Python sử dụng
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7. Khái niệm về
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 có thể gây nhầm lẫn cho người mới bắt đầu Python. Ở đây, tôi muốn sử dụng một số ví dụ để làm nổi bật sự khác biệt và tương đồng giữa
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7.

Trước hết, hãy để Lôi nhìn vào loại dữ liệu của Python

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7.
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 là biểu diễn điểm nổi của IEEE 754 của không phải là một số (NAN), là loại nổi của Python tích hợp. Tuy nhiên,
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 là của Nonetype và là một đối tượng.

Đối với mục đích so sánh,

In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 so với
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 khác sử dụng
In [21]: s = pd.Series([1, 2, 3])

In [22]: s.loc[0] = None

In [23]: s
Out[23]: 
0    NaN
1    2.0
2    3.0
dtype: float64
1 trả về sai, trong khi
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 so với
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 khác bằng cách sử dụng
In [21]: s = pd.Series([1, 2, 3])

In [22]: s.loc[0] = None

In [23]: s
Out[23]: 
0    NaN
1    2.0
2    3.0
dtype: float64
4Return. Sử dụng cả
In [21]: s = pd.Series([1, 2, 3])

In [22]: s.loc[0] = None

In [23]: s
Out[23]: 
0    NaN
1    2.0
2    3.0
dtype: float64
1 và
In [21]: s = pd.Series([1, 2, 3])

In [22]: s.loc[0] = None

In [23]: s
Out[23]: 
0    NaN
1    2.0
2    3.0
dtype: float64
4,
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 so với một
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 khác trả về đúng.

Mặc dù sự khác biệt về loại dữ liệu là

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7,
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
01 Điều trị
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 tương tự. Ví dụ, chúng tôi tạo
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
04 bằng cách đọc trong tệp CSV.

Tại đây, DF có được hai cột: StringColumn và FloatColumn. Các loại dữ liệu là:

Sau đó, chúng tôi đặt hàng thủ công hàng đầu tiên của StringColumn thành

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7.

Đối với mục đích phân tích dữ liệu, chúng tôi muốn kiểm tra các giá trị bị thiếu trong DF.

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
04 đối xử
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 và
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
08SIMILLY. Cả
In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 và
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
08CAN đều được phát hiện bằng cách sử dụng
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
11.

Sau đó, để loại bỏ giá trị bị thiếu, chúng ta có thể chọn điền vào dữ liệu khác nhau theo kiểu dữ liệu của cột. Cả

In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64
7 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 đều có thể được điền bằng
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
14. Đối với các cột phân loại (cột chuỗi), chúng tôi muốn điền vào các giá trị bị thiếu với chế độ. Đối với các cột số (cột float), chúng tôi muốn điền vào các giá trị còn thiếu với giá trị trung bình.

Như tóm tắt,

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 là các loại dữ liệu khác nhau trong Python. Tuy nhiên, khi bị thiếu phát hiện và loại bỏ giá trị,
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
04 đối xử với
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7 tương tự. Để phát hiện các giá trị bị thiếu,
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
20 trả về đúng cho cả
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7. Để loại bỏ các giá trị bị thiếu,
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
23 cũng hoạt động cho
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
9 và
In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
7.

Trong phần này, chúng tôi sẽ thảo luận về các giá trị thiếu (còn được gọi là NA) trong gấu trúc.

Ghi chú

Việc lựa chọn sử dụng

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
26 trong nội bộ để biểu thị dữ liệu bị thiếu phần lớn là vì lý do đơn giản và hiệu suất. Bắt đầu từ Pandas 1.0, một số loại dữ liệu tùy chọn bắt đầu thử nghiệm vô hướng
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
27 gốc bằng cách sử dụng phương pháp dựa trên mặt nạ. Xem ở đây để biết thêm.here for more.

Xem sách dạy nấu ăn cho một số chiến lược nâng cao.cookbook for some advanced strategies.

Các giá trị được coi là mất tích ”#

Khi dữ liệu có nhiều hình dạng và hình thức, gấu trúc nhằm mục đích linh hoạt liên quan đến việc xử lý dữ liệu bị thiếu. Mặc 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
26 là điểm đánh dấu giá trị bị thiếu mặc định vì lý do tốc độ tính toán và sự thuận tiện, chúng ta cần có thể dễ dàng phát hiện giá trị này với dữ liệu thuộc các loại khác nhau: điểm nổi, số nguyên, boolean và đối tượng chung. Tuy nhiên, trong nhiều trường hợp, Python
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
29 sẽ phát sinh và chúng tôi cũng muốn xem xét rằng, thiếu sót hoặc không có sẵn.

Ghi chú

Việc lựa chọn sử dụng

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
26 trong nội bộ để biểu thị dữ liệu bị thiếu phần lớn là vì lý do đơn giản và hiệu suất. Bắt đầu từ Pandas 1.0, một số loại dữ liệu tùy chọn bắt đầu thử nghiệm vô hướng
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
27 gốc bằng cách sử dụng phương pháp dựa trên mặt nạ. Xem ở đây để biết thêm.

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True

Xem sách dạy nấu ăn cho một số chiến lược nâng cao.

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False

Cảnh báo

Hiện tại, UFUNCS liên quan đến NDarray và

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
27 sẽ trả về một đối tượng chứa đầy các giá trị NA.do. Note that pandas/NumPy uses the fact that
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
37, and treats
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
29 like
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
39.

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False

Loại trả lại ở đây có thể thay đổi để trả về một loại mảng khác trong tương lai.

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool

Xem khả năng tương tác của DataFrame với các hàm Numpy để biết thêm về UFUNCS.

Nếu bạn có một khung dữ liệu hoặc chuỗi sử dụng các loại truyền thống có dữ liệu bị thiếu được biểu thị bằng

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
39, có các phương thức tiện lợi
df1 = df.astype(object).replace(np.nan, 'None')
46 nối tiếp và
df1 = df.astype(object).replace(np.nan, 'None')
46 trong DataFrame có thể chuyển đổi dữ liệu để sử dụng các DTYPE mới hơn cho số nguyên, chuỗi và booleans được liệt kê ở đây. Điều này đặc biệt hữu ích sau khi đọc trong các bộ dữ liệu khi cho phép các độc giả như
df1 = df.astype(object).replace(np.nan, 'None')
48 và
df1 = df.astype(object).replace(np.nan, 'None')
49 suy ra các DTYPE mặc định.Support for integer NA for more). pandas provides a nullable integer array, which can be used by explicitly requesting the dtype:

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64

Trong ví dụ này, trong khi DTYPE của tất cả các cột được thay đổi, chúng tôi hiển thị kết quả cho 10 cột đầu tiên.

Trong phần này, chúng tôi sẽ thảo luận về các giá trị thiếu (còn được gọi là NA) trong gấu trúc.Nullable integer data type for more.

Datetimes#

Ghi chú

In [15]: df2 = df.copy()

In [16]: df2["timestamp"] = pd.Timestamp("20120101")

In [17]: df2
Out[17]: 
        one       two     three four   five  timestamp
a  0.469112 -0.282863 -1.509059  bar   True 2012-01-01
c -1.135632  1.212112 -0.173215  bar  False 2012-01-01
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h  0.721555 -0.706771 -1.039575  bar   True 2012-01-01

In [18]: df2.loc[["a", "c", "h"], ["one", "timestamp"]] = np.nan

In [19]: df2
Out[19]: 
        one       two     three four   five  timestamp
a       NaN -0.282863 -1.509059  bar   True        NaT
c       NaN  1.212112 -0.173215  bar  False        NaT
e  0.119209 -1.044236 -0.861849  bar   True 2012-01-01
f -2.104569 -0.494929  1.071804  bar  False 2012-01-01
h       NaN -0.706771 -1.039575  bar   True        NaT

In [20]: df2.dtypes.value_counts()
Out[20]: 
float64           3
object            1
bool              1
datetime64[ns]    1
dtype: int64

Việc lựa chọn sử dụng 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 26 trong nội bộ để biểu thị dữ liệu bị thiếu phần lớn là vì lý do đơn giản và hiệu suất. Bắt đầu từ Pandas 1.0, một số loại dữ liệu tùy chọn bắt đầu thử nghiệm vô hướng 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 27 gốc bằng cách sử dụng phương pháp dựa trên mặt nạ. Xem ở đây để biết thêm.

Xem sách dạy nấu ăn cho một số chiến lược nâng cao.

Các giá trị được coi là mất tích ”#

In [21]: s = pd.Series([1, 2, 3])

In [22]: s.loc[0] = None

In [23]: s
Out[23]: 
0    NaN
1    2.0
2    3.0
dtype: float64

Khi dữ liệu có nhiều hình dạng và hình thức, gấu trúc nhằm mục đích linh hoạt liên quan đến việc xử lý dữ liệu bị thiếu. Mặc 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
26 là điểm đánh dấu giá trị bị thiếu mặc định vì lý do tốc độ tính toán và sự thuận tiện, chúng ta cần có thể dễ dàng phát hiện giá trị này với dữ liệu thuộc các loại khác nhau: điểm nổi, số nguyên, boolean và đối tượng chung. Tuy nhiên, trong nhiều trường hợp, Python
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
29 sẽ phát sinh và chúng tôi cũng muốn xem xét rằng, thiếu sót hoặc không có sẵn.

Nếu bạn muốn xem xét

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
30 và
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
31 để trở thành NA NA trong các tính toán, bạn có thể đặt
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
32.

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
0

Để giúp phát hiện các giá trị bị thiếu dễ dàng hơn (và trên các DTYpes mảng khác nhau), Pandas cung cấp các hàm 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 33 và 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 34, cũng là các phương thức trên các đối tượng sê -ri và DataFrame:

Người ta phải chú ý rằng trong Python (và Numpy),

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
35 don lồng so sánh bằng nhau, nhưng
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
36 làm. Lưu ý rằng gấu trúc/numpy sử dụng thực tế là
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
37 và đối xử với
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
29 như
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
39.

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
1

Thống kê mô tả và phương pháp tính toán được thảo luận trong tổng quan về cấu trúc dữ liệu (và được liệt kê ở đây và ở đây) đều được ghi để giải thích cho dữ liệu bị thiếu. Ví dụ:data structure overview (and listed here and here) are all written to account for missing data. For example:

  • Khi tổng dữ liệu, các giá trị Na (thiếu) sẽ được coi là không.

  • Nếu dữ liệu là tất cả NA, kết quả sẽ là 0.

  • Các phương pháp tích lũy như

    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
    
    49 và
    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
    
    50 bỏ qua các giá trị NA theo mặc định, nhưng bảo tồn chúng trong các mảng kết quả. Để ghi đè hành vi này và bao gồm các giá trị NA, hãy sử dụng
    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
    
    51.

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
2

SUM/SPROT OF EMPTIES/NANS#

Cảnh báo

Hành vi này hiện là tiêu chuẩn kể từ v0.22.0 và phù hợp với mặc định trong

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
52; Sum/prod trước đây của All-NA hoặc Dòng/DataFrames trống sẽ trả về NAN. Xem V0.22.0 WhatsNew để biết thêm.v0.22.0 whatsnew for more.

Tổng của một chuỗi hoặc cột trống hoặc cột của DataFrame là 0.

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
3

Sản phẩm của một chuỗi hoặc cột trống hoặc toàn bộ của DataFrame là 1.

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
4

Giá trị NA trong Groupby#

Các nhóm NA trong Groupby được tự động loại trừ. Hành vi này phù hợp với R, ví 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
5

Xem phần Nhóm ở đây để biết thêm thông tin.here for more information.

Làm sạch / điền vào dữ liệu bị thiếu#

Các đối tượng gấu trúc được trang bị các phương pháp thao tác dữ liệu khác nhau để xử lý dữ liệu bị thiếu.

Điền vào các giá trị bị thiếu: fillna#

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
53 có thể điền vào các giá trị NA NA với dữ liệu không phải NA theo một vài cách mà chúng tôi minh họa:

Thay thế NA bằng giá trị vô hướng

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
6

Lấp đầy khoảng trống về phía trước hoặc lùi

Sử dụng các đối số điền tương tự như tái xuất, chúng ta có thể truyền bá các giá trị không phải NA về phía trước hoặc lùi:reindexing, we can propagate non-NA values forward or backward:

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
7

Giới hạn số lượng điền

Nếu chúng tôi chỉ muốn các khoảng trống liên tiếp lấp đầy lên đến một số điểm dữ liệu nhất định, chúng tôi có thể sử dụng từ khóa

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
54:

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
8

Để nhắc nhở bạn, đây là những phương pháp điền có sẵn:

Phương pháp

Hoạt động

pad / ffill

Điền vào các giá trị về phía trước

Bfill / Onfill

Lấp đầy các giá trị ngược

Với dữ liệu chuỗi thời gian, sử dụng pad/ffill là cực kỳ phổ biến, do đó, giá trị được biết đến cuối cùng có sẵn tại mọi thời điểm.

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
55 tương đương với
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
56 và
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
57 tương đương với
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
58

Điền vào một pandasobject#

Bạn cũng có thể sử dụng một sê -ri hoặc sê -ri có thể phù hợp. Các nhãn của dict hoặc chỉ số của loạt phải khớp với các cột của khung bạn muốn điền. Trường hợp sử dụng của điều này là để lấp đầy một khung dữ liệu với giá trị trung bình của cột đó.

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
9

Kết quả tương tự như trên, nhưng đang sắp xếp giá trị ‘điền vào một loạt trong trường hợp này.

df1 = df.astype(object).replace(np.nan, 'None')
0

Thả nhãn trục với dữ liệu bị thiếu: Dropna#

Bạn có thể chỉ muốn loại trừ các nhãn khỏi tập dữ liệu đề cập đến dữ liệu bị thiếu. Để làm điều này, hãy sử dụng

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
59:

df1 = df.astype(object).replace(np.nan, 'None')
1

Một

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
59 tương đương có sẵn cho loạt. DataFrame.dropna có nhiều tùy chọn hơn đáng kể so với series.dropna, có thể được kiểm tra trong API.in the API.

Interpolation#

Cả hai đối tượng series và dataFrame đều có

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
61, theo mặc định, thực hiện phép nội suy tuyến tính tại các điểm dữ liệu bị thiếu.

df1 = df.astype(object).replace(np.nan, 'None')
2

Hướng dẫn python float(nan to none) - python float (nan để không)

df1 = df.astype(object).replace(np.nan, 'None')
3

Hướng dẫn python float(nan to none) - python float (nan để không)

Nội suy nhận biết chỉ mục có sẵn thông qua từ khóa

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
62:

df1 = df.astype(object).replace(np.nan, 'None')
4

Đối với một chỉ số dấu phẩy động, hãy sử dụng

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
63:

df1 = df.astype(object).replace(np.nan, 'None')
5

Bạn cũng có thể nội suy với DataFrame:

df1 = df.astype(object).replace(np.nan, 'None')
6

Đối số

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
62 cho phép truy cập vào các phương pháp nội suy fancier. Nếu bạn đã cài đặt SCIPY, bạn có thể chuyển tên của thói quen nội suy 1-D sang
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
62. Bạn sẽ muốn tham khảo tài liệu nội suy SCIPY đầy đủ và hướng dẫn tham khảo để biết chi tiết. Phương pháp nội suy thích hợp sẽ phụ thuộc vào loại dữ liệu bạn đang làm việc.

  • Nếu bạn đang đối phó với một chuỗi thời gian đang phát triển với tốc độ ngày càng tăng,

    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
    
    66 có thể phù hợp.

  • Nếu bạn có các giá trị xấp xỉ hàm phân phối tích lũy, thì

    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
    
    67 sẽ hoạt động tốt.

  • Để điền vào các giá trị bị thiếu với mục tiêu âm mưu trơn tru, hãy xem xét

    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
    
    68.

Cảnh báo

Hành vi này hiện là tiêu chuẩn kể từ v0.22.0 và phù hợp với mặc định trong

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
52; Sum/prod trước đây của All-NA hoặc Dòng/DataFrames trống sẽ trả về NAN. Xem V0.22.0 WhatsNew để biết thêm.

df1 = df.astype(object).replace(np.nan, 'None')
7

Tổng của một chuỗi hoặc cột trống hoặc cột của DataFrame là 0.

df1 = df.astype(object).replace(np.nan, 'None')
8

Sản phẩm của một chuỗi hoặc cột trống hoặc toàn bộ của DataFrame là 1.

df1 = df.astype(object).replace(np.nan, 'None')
9

Hướng dẫn python float(nan to none) - python float (nan để không)

Giá trị NA trong Groupby#

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
0

Các nhóm NA trong Groupby được tự động loại trừ. Hành vi này phù hợp với R, ví dụ:

Xem phần Nhóm ở đây để biết thêm thông tin.

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
1

Làm sạch / điền vào dữ liệu bị thiếu#

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
2

Theo mặc định, các giá trị

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
26 được điền cho dù chúng ở bên trong (được bao quanh bởi) các giá trị hợp lệ hiện có hoặc bên ngoài các giá trị hợp lệ hiện có. Tham số
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
81 hạn chế điền vào các giá trị bên trong hoặc bên ngoài.

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
3

Thay thế các giá trị chung#

Thường thì chúng tôi muốn thay thế các giá trị tùy ý bằng các giá trị khác.

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
82 nối tiếp và
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
82 trong DataFrame cung cấp một cách hiệu quả nhưng linh hoạt để thực hiện các thay thế đó.

Đối với một chuỗi, bạn có thể thay thế một giá trị duy nhất hoặc danh sách các giá trị bằng một giá trị khác:

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
4

Bạn có thể thay thế danh sách các giá trị bằng danh sách các giá trị khác:

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
5

Bạn cũng có thể chỉ định một mô tả ánh xạ:

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
6

Đối với DataFrame, bạn có thể chỉ định các giá trị riêng lẻ theo cột:

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
7

Thay vì thay thế bằng các giá trị được chỉ định, bạn có thể coi tất cả các giá trị đã cho là thiếu và nội suy chúng:

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
8

Chuỗi/thay thế biểu thức chính quy#

Ghi chú

Các chuỗi Python có tiền tố với ký tự

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
84 như
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
85 được gọi là chuỗi Raw Raw. Họ có các ngữ nghĩa khác nhau liên quan đến dấu gạch chéo ngược với các chuỗi mà không có tiền tố này. Backslashes trong các chuỗi thô sẽ được hiểu là một dấu gạch chéo ngược, ví 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
86. Bạn nên đọc về chúng nếu điều này không rõ ràng.

Thay thế ‘.

In [1]: df = pd.DataFrame(
   ...:     np.random.randn(5, 3),
   ...:     index=["a", "c", "e", "f", "h"],
   ...:     columns=["one", "two", "three"],
   ...: )
   ...: 

In [2]: df["four"] = "bar"

In [3]: df["five"] = df["one"] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
h  0.721555 -0.706771 -1.039575  bar   True

In [5]: df2 = df.reindex(["a", "b", "c", "d", "e", "f", "g", "h"])

In [6]: df2
Out[6]: 
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN       NaN       NaN  NaN    NaN
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False
g       NaN       NaN       NaN  NaN    NaN
h  0.721555 -0.706771 -1.039575  bar   True
9

Bây giờ hãy làm điều đó với một biểu thức thông thường loại bỏ xung quanh khoảng trắng (regex -> regex):

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
0

Thay thế một vài giá trị khác nhau (danh sách -> Danh sách):

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
1

Danh sách Regex -> Danh sách Regex:

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
2

Chỉ tìm kiếm trong cột

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
88 (dict -> dict):

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
3

Giống như ví dụ trước, nhưng sử dụng biểu thức chính quy để tìm kiếm thay thế (Dict of Regex -> Dict):

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
4

Bạn có thể vượt qua từ điển lồng nhau của các biểu thức thông thường sử dụng

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
89:

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
5

Ngoài ra, bạn có thể vượt qua từ điển lồng nhau như vậy:

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
6

Bạn cũng có thể sử dụng nhóm của một biểu thức phù hợp thông thường khi thay thế (Dict of Regex -> Dict of Regex), điều này cũng hoạt động cho các danh sách.

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
7

Bạn có thể vượt qua một danh sách các biểu thức thông thường, trong đó những biểu thức phù hợp sẽ được thay thế bằng vô hướng (danh sách regex -> regex).

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
8

Tất cả các ví dụ biểu thức thông thường cũng có thể được truyền bằng đối số

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
90 dưới dạng đối số
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
91. Trong trường hợp này, đối số
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
92 phải được truyền rõ ràng bằng tên hoặc
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
91 phải là một từ điển lồng nhau. Ví dụ trước, trong trường hợp này, sau đó sẽ là:

In [7]: df2["one"]
Out[7]: 
a    0.469112
b         NaN
c   -1.135632
d         NaN
e    0.119209
f   -2.104569
g         NaN
h    0.721555
Name: one, dtype: float64

In [8]: pd.isna(df2["one"])
Out[8]: 
a    False
b     True
c    False
d     True
e    False
f    False
g     True
h    False
Name: one, dtype: bool

In [9]: df2["four"].notna()
Out[9]: 
a     True
b    False
c     True
d    False
e     True
f     True
g    False
h     True
Name: four, dtype: bool

In [10]: df2.isna()
Out[10]: 
     one    two  three   four   five
a  False  False  False  False  False
b   True   True   True   True   True
c  False  False  False  False  False
d   True   True   True   True   True
e  False  False  False  False  False
f  False  False  False  False  False
g   True   True   True   True   True
h  False  False  False  False  False
9

Điều này có thể thuận tiện nếu bạn không muốn vượt qua

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
89 mỗi khi bạn muốn sử dụng biểu thức thông thường.

Ghi chú

Các chuỗi Python có tiền tố với ký tự

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
84 như
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
85 được gọi là chuỗi Raw Raw. Họ có các ngữ nghĩa khác nhau liên quan đến dấu gạch chéo ngược với các chuỗi mà không có tiền tố này. Backslashes trong các chuỗi thô sẽ được hiểu là một dấu gạch chéo ngược, ví 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
86. Bạn nên đọc về chúng nếu điều này không rõ ràng.

Thay thế ‘.

Bây giờ hãy làm điều đó với một biểu thức thông thường loại bỏ xung quanh khoảng trắng (regex -> regex):

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
0

Thay thế một vài giá trị khác nhau (danh sách -> Danh sách):

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
1

Danh sách Regex -> Danh sách Regex:

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
2

Chỉ tìm kiếm trong cột 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 88 (dict -> dict):

Giống như ví dụ trước, nhưng sử dụng biểu thức chính quy để tìm kiếm thay thế (Dict of Regex -> Dict):

Bạn có thể vượt qua từ điển lồng nhau của các biểu thức thông thường sử dụng

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
89:

Ngoài ra, bạn có thể vượt qua từ điển lồng nhau như vậy:

Bạn cũng có thể sử dụng nhóm của một biểu thức phù hợp thông thường khi thay thế (Dict of Regex -> Dict of Regex), điều này cũng hoạt động cho các danh sách.

float

boolean

Bạn có thể vượt qua một danh sách các biểu thức thông thường, trong đó những biểu thức phù hợp sẽ được thay thế bằng vô hướng (danh sách regex -> regex).

float

Tất cả các ví dụ biểu thức thông thường cũng có thể được truyền bằng đối số

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
90 dưới dạng đối số
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
91. Trong trường hợp này, đối số
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
92 phải được truyền rõ ràng bằng tên hoặc
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
91 phải là một từ điển lồng nhau. Ví dụ trước, trong trường hợp này, sau đó sẽ là:

Bạn có thể vượt qua một danh sách các biểu thức thông thường, trong đó những biểu thức phù hợp sẽ được thay thế bằng vô hướng (danh sách regex -> regex).

Tất cả các ví dụ biểu thức thông thường cũng có thể được truyền bằng đối số

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
90 dưới dạng đối số
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
91. Trong trường hợp này, đối số
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
92 phải được truyền rõ ràng bằng tên hoặc
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
91 phải là một từ điển lồng nhau. Ví dụ trước, trong trường hợp này, sau đó sẽ là:

Điều này có thể thuận tiện nếu bạn không muốn vượt qua

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
89 mỗi khi bạn muốn sử dụng biểu thức thông thường.

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
3

Bất cứ nơi nào trong các ví dụ trên

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
95 mà bạn thấy một biểu thức thông thường, một biểu thức thông thường được biên dịch cũng hợp lệ.

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
4

Thay thế số#

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
5

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
82 tương tự như
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
53.

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
6

Thay thế nhiều hơn một giá trị là có thể bằng cách truyền một danh sách.Nullable integer data type for more.

Bạn cũng có thể hoạt động trên DataFrame tại chỗ:

Thiếu quy tắc đúc dữ liệu và lập chỉ mục#

Mặc dù gấu trúc hỗ trợ lưu trữ các mảng số nguyên và boolean, các loại này không có khả năng lưu trữ dữ liệu bị thiếu. Cho đến khi chúng tôi có thể chuyển sang sử dụng loại NA gốc trong Numpy, chúng tôi đã thiết lập một số quy tắc đúc của người Viking. Khi một hoạt động tái xuất giới giới thiệu dữ liệu bị thiếu, loạt phim sẽ được sử dụng theo các quy tắc được giới thiệu trong bảng dưới đây.

loại dữ liệu

Đúc đếninteger, boolean and dedicated string data types as the missing value indicator.

Số nguyên

sự vật

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
7

Hiện tại, Pandas chưa sử dụng các loại dữ liệu đó theo mặc định (khi tạo DataFrame hoặc Sê -ri hoặc khi đọc trong dữ liệu), vì vậy bạn cần chỉ định DTYPE rõ ràng. Một cách dễ dàng để chuyển đổi sang các DTYPE đó được giải thích ở đây.here.

Tuyên truyền trong các hoạt động số học và so sánh#

Nói chung, các giá trị bị thiếu lan truyền trong các hoạt động liên quan đến

df1 = df.astype(object).replace(np.nan, 'None')
01. Khi một trong những toán hạng không rõ, kết quả của hoạt động cũng không được biết.

Ví dụ,

df1 = df.astype(object).replace(np.nan, 'None')
01 tuyên truyền trong các hoạt động số học, tương tự như
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
39:

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
8

Có một vài trường hợp đặc biệt khi kết quả được biết đến, ngay cả khi một trong các toán hạng là

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
27.

In [11]: None == None  # noqa: E711
Out[11]: True

In [12]: np.nan == np.nan
Out[12]: False
9

Trong các hoạt động bình đẳng và so sánh,

df1 = df.astype(object).replace(np.nan, 'None')
01 cũng tuyên truyền. Điều này sai lệch so với hành vi của
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
39, trong đó so sánh với
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
39 luôn trả lại
df1 = df.astype(object).replace(np.nan, 'None')
15.

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
0

Để kiểm tra xem giá trị có bằng

df1 = df.astype(object).replace(np.nan, 'None')
01 hay không, hàm
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
33 có thể được sử dụng không:

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
1

Một ngoại lệ về quy tắc tuyên truyền cơ bản này là giảm (chẳng hạn như giá trị trung bình hoặc tối thiểu), trong đó gấu trúc mặc định bỏ qua các giá trị bị thiếu. Xem ở trên để biết thêm.above for more.

Hoạt động logic#

Đối với các hoạt động logic,

df1 = df.astype(object).replace(np.nan, 'None')
01 tuân theo các quy tắc của logic ba giá trị (hoặc logic kleene, tương tự như R, SQL và Julia). Logic này có nghĩa là chỉ tuyên truyền các giá trị bị thiếu khi nó được yêu cầu về mặt logic.

Ví dụ: đối với hoạt động logic hoặc hoạt động logic (

df1 = df.astype(object).replace(np.nan, 'None')
19), nếu một trong các toán hạng là
df1 = df.astype(object).replace(np.nan, 'None')
20, chúng ta đã biết kết quả sẽ là ____220, bất kể giá trị khác (vì vậy bất kể giá trị còn thiếu sẽ là
df1 = df.astype(object).replace(np.nan, 'None')
20 hoặc
df1 = df.astype(object).replace(np.nan, 'None')
15). Trong trường hợp này,
df1 = df.astype(object).replace(np.nan, 'None')
01 không tuyên truyền:

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
2

Mặt khác, nếu một trong các toán hạng là

df1 = df.astype(object).replace(np.nan, 'None')
15, kết quả phụ thuộc vào giá trị của toán hạng khác. Do đó, trong trường hợp này
df1 = df.astype(object).replace(np.nan, 'None')
01 tuyên truyền:

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
3

Hành vi của hoạt động logic và hoạt động logic (

df1 = df.astype(object).replace(np.nan, 'None')
27) có thể được lấy bằng cách sử dụng logic tương tự (trong đó bây giờ
df1 = df.astype(object).replace(np.nan, 'None')
01 sẽ không tuyên truyền nếu một trong các toán hạng đã được
df1 = df.astype(object).replace(np.nan, 'None')
15):

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
4

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
5

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 27 trong bối cảnh boolean#

Vì giá trị thực tế của NA là không rõ, nên việc chuyển đổi NA thành giá trị boolean là mơ hồ. Những điều sau đây gây ra lỗi:

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
6

Điều này cũng có nghĩa là

df1 = df.astype(object).replace(np.nan, 'None')
01 không thể được sử dụng trong bối cảnh mà nó được đánh giá là boolean, chẳng hạn như
df1 = df.astype(object).replace(np.nan, 'None')
32 trong đó
df1 = df.astype(object).replace(np.nan, 'None')
33 có khả năng là
df1 = df.astype(object).replace(np.nan, 'None')
01. Trong những trường hợp như vậy,
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
33 có thể được sử dụng để kiểm tra
df1 = df.astype(object).replace(np.nan, 'None')
01 hoặc
df1 = df.astype(object).replace(np.nan, 'None')
33 là
df1 = df.astype(object).replace(np.nan, 'None')
01 có thể tránh được, ví dụ bằng cách điền vào các giá trị bị thiếu trước đó.

Một tình huống tương tự xảy ra khi sử dụng các đối tượng Data hoặc DataFrame trong các câu lệnh

df1 = df.astype(object).replace(np.nan, 'None')
39, xem bằng cách sử dụng các câu lệnh IF/Truth với gấu trúc.Using if/truth statements with pandas.

Numpy Ufuncs#

df1 = df.astype(object).replace(np.nan, 'None')
40 thực hiện giao thức Numpy từ ____241. Hầu hết các UFUNCS hoạt động với
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
27 và thường trả về
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
27:

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
7

Cảnh báo

Hiện tại, UFUNCS liên quan đến NDarray và

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
27 sẽ trả về một đối tượng chứa đầy các giá trị NA.

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
8

Loại trả lại ở đây có thể thay đổi để trả về một loại mảng khác trong tương lai.

Xem khả năng tương tác của DataFrame với các hàm Numpy để biết thêm về UFUNCS.DataFrame interoperability with NumPy functions for more on ufuncs.

Conversion#

Nếu bạn có một khung dữ liệu hoặc chuỗi sử dụng các loại truyền thống có dữ liệu bị thiếu được biểu thị bằng

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
39, có các phương thức tiện lợi
df1 = df.astype(object).replace(np.nan, 'None')
46 nối tiếp và
df1 = df.astype(object).replace(np.nan, 'None')
46 trong DataFrame có thể chuyển đổi dữ liệu để sử dụng các DTYPE mới hơn cho số nguyên, chuỗi và booleans được liệt kê ở đây. Điều này đặc biệt hữu ích sau khi đọc trong các bộ dữ liệu khi cho phép các độc giả như
df1 = df.astype(object).replace(np.nan, 'None')
48 và
df1 = df.astype(object).replace(np.nan, 'None')
49 suy ra các DTYPE mặc định.here. This is especially helpful after reading in data sets when letting the readers such as
df1 = df.astype(object).replace(np.nan, 'None')
48 and
df1 = df.astype(object).replace(np.nan, 'None')
49 infer default dtypes.

Trong ví dụ này, trong khi DTYPE của tất cả các cột được thay đổi, chúng tôi hiển thị kết quả cho 10 cột đầu tiên.

In [13]: df2["one"] == np.nan
Out[13]: 
a    False
b    False
c    False
d    False
e    False
f    False
g    False
h    False
Name: one, dtype: bool
9

In [14]: pd.Series([1, 2, np.nan, 4], dtype=pd.Int64Dtype())
Out[14]: 
0       1
1       2
2    
3       4
dtype: Int64
0