我正在尝试基于列值在数据框中将值设置为Nan。我尝试了Web上建议的一些方法,但没有一个方法针对该特定列实际将值设置为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? product_id_x是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'
也尝试了其他一些方法,但是它们都不可行。 请帮助,谢谢。
答案 0 :(得分:1)
尝试一下,您可能会得到想要的结果:
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 |
如果没有帮助,请尝试此操作。请让我知道
答案 1 :(得分:0)
您是否尝试过numpy np.nan
? (第一个import numpy as np
)
如果您的“ Nan”是字符串,请执行以下操作:
masterDf[cols] = masterDf[cols].apply(pd.to_numeric,errors='coerce')
之后,或者如果您的“ Nans”已经是np.nan
masterDf.loc[masterDf['product_id_x'].isnull(),'rating_y'] = np.nan