установка значений для Nan не работает в Pandas на основании некоторого условия - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь установить значения 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, где 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 голосов
/ 27 февраля 2019

Попробуйте, вы можете получить желаемый результат:

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      |

Попробуйте, если это не поможет.Пожалуйста, дайте мне знать

0 голосов
/ 27 февраля 2019

Вы пробовали numy 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...