Python 根据某些条件,将值设置为Nan在熊猫中不起作用
我试图在基于列值的数据帧中将值设置为Nan。我在网上尝试了一些建议的方法,但没有一种方法实际将特定列的值设置为Nan。 以下是一些用于理解目的的数据Python 根据某些条件,将值设置为Nan在熊猫中不起作用,python,pandas,dataframe,Python,Pandas,Dataframe,我试图在基于列值的数据帧中将值设置为Nan。我在网上尝试了一些建议的方法,但没有一种方法实际将特定列的值设置为Nan。 以下是一些用于理解目的的数据 | user_id | produc_id_x | rating_x | product_id_y | rating_y | |----------------|-------------|----------|--------------|----------| | A3G70XRVGQJSD4 | NaN | Na
| user_id | produc_id_x | rating_x | product_id_y | rating_y |
|----------------|-------------|----------|--------------|----------|
| A3G70XRVGQJSD4 | NaN | NaN | B0000DC3TN | 2.0 |
| A392RM05V6KJ4B | B003AI2VGA | 3.0 | B00004CQYO | 4.0 |
| A7JI1GQJ9KYUA | Nan | Nan | Q700063BT0 | 4.0 |
| A3GZWYWL3BQDLI | Nan | Nan | B003A3R3ZY | 5.0 |
| A141HP4LYPWMSR | B003AI2VGA | 3.0 | B002LMSWNC | 3.0 |
我想将rating_y设置为Nan的要求是什么
产品标识为Nan:
这是我为此编写的代码,但它没有将值设置为Nan
masterDf=data.merge(data2,on="user_id",how="outer")
#masterDf contains the complete dataframe
masterDf.loc[masterDf['product_id_x']=='Nan','rating_y']='Nan'
还包括:
masterDfnan= masterDf.where(masterDf['product_id_x']=='Nan')
masterDfnan['rating_y']='Nan'
我也尝试过其他一些方法,但都不可能奏效。
请帮忙,谢谢。你试过numpy
np.nan
吗?(首先将numpy导入为np
)
如果您的“Nan”是字符串,请执行以下操作:
masterDf[cols] = masterDf[cols].apply(pd.to_numeric,errors='coerce')
之后,或者如果您的“nan”已经是np.nan
masterDf.loc[masterDf['product_id_x'].isnull(),'rating_y'] = np.nan
尝试此方法,您可能会得到您想要的结果:
masterDf.loc[masterDf['product_id_x'] == 'Nan', 'rating_y'] = np.nan
通过这样做,您将得到如下结果:
| user_id | produc_id_x | rating_x | product_id_y | rating_y |
|----------------|-------------|----------|--------------|----------|
| A3G70XRVGQJSD4 | NaN | NaN | B0000DC3TN | Nan |
| A392RM05V6KJ4B | B003AI2VGA | 3.0 | B00004CQYO | 4.0 |
| A7JI1GQJ9KYUA | Nan | Nan | Q700063BT0 | Nan |
| A3GZWYWL3BQDLI | Nan | Nan | B003A3R3ZY | Nan |
| A141HP4LYPWMSR | B003AI2VGA | 3.0 | B002LMSWNC | 3.0 |
如果没有用,试试这个。请让我知道masterDf[cols]中的cols是什么?在使用cols之前尝试一下这个:cols=masterDf.columns[masterDf.dtypes.eq('object')你能帮我吗