当从像csv文件这样的源阅读 Dataframe 时,像'?对于pandas中的空白值,将显示'。
如果这是一个数值列,你尝试用mean替换,比如df['weight'].replace('?',df['weight'].mean() ,inplace='True')
,如果它的类型是“Object”而不是int64,可能不起作用。
在这种情况下,我取代这些'?因为isna()不直接作用于它们。然后将这些NaN替换为0,最后使用它们替换为要插补的实际值
df['SGOT'].replace('?',np.nan,inplace='True' )
df1['SGOT'].fillna(value=0,inplace=True)
df1['SGOT']=df1['SGOT'].astype(int)
df1['SGOT'].replace(0,df1['SGOT'].mean(),inplace=True )
我相信有更好的方法来做到这一点。请让我知道
3条答案
按热度按时间zsbz8rwp1#
当你读取数据时(大概是用
pd.read_csv()
)是用nan
替换'?'
的好时机:参见docs。
na_values
也可以是一个列表或指令集。默认情况下,这将 * 添加 *
'?'
到要解释为NaN的字符串列表中(如果您愿意,可以使用keep_default_na=False
进行更改)。vhmi4jdf2#
您可以发送一个dict作为参数到
df.replace()
,其中此dict将包括具有要替换的值和新值的列名。对于列的平均值,可以将参数errors
指定为True
。下面是一个代码来解释:kiz8lqtg3#
这实际上取决于你的 Dataframe 。如果你的dataframe中有多种数据类型(比如string和integers),那么replace函数即使在使用inplace = True之后也不会工作。在这种情况下,您可以使用
希望这对你有帮助。