簡體   English   中英

如何使用 pandas 擦除某個列中的“nan”值?

[英]How to erase 'nan' values that are in a certain column using pandas?

我有一列有一堆混合了“nan”的行。 我只想刪除“nan”,而不是包含“nan”的整行。 該列中的某些單元格有多個 nan,例如:nan、nan、nan、nan,而某些單元格的名稱是我需要的 nan,例如:Jefferson,nan,nan,nan

我怎樣才能抹去nan?

您可以嘗試將 nan 替換為某個值,例如 0 或 ""? pandas.DataFrame.fillna

來自: geekforgeek

在 Pandas DataFrame 中用零替換 NaN 值的方法:

fillna()
The fillna() function is used to fill NA/NaN values using the specified method.
replace()
The dataframe.replace() function in Pandas can be defined as a simple method used to replace a string, regex, list, dictionary etc. in a DataFrame.

替換 NaN 值的步驟:

For one column using pandas:

df['DataFrame Column'] = df['DataFrame Column'].fillna(0)

For one column using numpy:

df['DataFrame Column'] = df['DataFrame Column'].replace(np.nan, 0)

For the whole DataFrame using pandas:

df.fillna(0)

For the whole DataFrame using numpy:

df.replace(np.nan, 0)

我的建議:當您使用字符串時,將 NaN 替換為空格“”,並在處理 dataframe 時跳過該值 ==“”

這應該有效。 我正在使用正則表達式僅匹配'nan''nan,<something>'並且我將其替換為空字符串''

我決定使用正則表達式,因為根據您的問題,我認為您不能使用文字字符串,因為您不知道確切是在單元格內(可以是任意數量的'nan's .

import pandas as pd

data = {'names': ['Jefferson', 'nan', 'Olivia', 'nan', 'nan', 'nan,nan,nan', 'Rebekah'],
        'numbers': [1, 2, 3, 4, 5, 6, 7]}

df = pd.DataFrame(data=data)
df['names'] = df['names'].replace({r'^nan$': '', r'^nan,.*': ''}, regex=True)
df

如果我們不是在談論字符串'nan'那么df.fillna('')應該可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM