Python 根据某些条件,将值设置为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

我试图在基于列值的数据帧中将值设置为Nan。我在网上尝试了一些建议的方法,但没有一种方法实际将特定列的值设置为Nan。 以下是一些用于理解目的的数据

| 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')你能帮我吗