根据某些条件将值设置为Nan在熊猫中不起作用

时间:2019-02-27 02:00:24

标签: python pandas dataframe

我正在尝试基于列值在数据框中将值设置为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'

也尝试了其他一些方法,但是它们都不可行。 请帮助,谢谢。

2 个答案:

答案 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