Python pandas - сравнить значения - PullRequest
0 голосов
/ 07 августа 2020

Input and Expected Output

  1. How to copy value from for NaN from next row and add a flag as '(copy)'? done -
df = (df.bfill() + df.fillna(' (copy)').where(df.isna())).fillna(df)
  1. Как сравнить значения row 2 и row 3 со значением в строке 1 и добавить string как «(не то же самое)», если значения не совпадают, и получить ожидаемый результат ??

1 Ответ

1 голос
/ 07 августа 2020

Сохраните маски в переменных, чтобы их можно было использовать позже:

df = pd.DataFrame({"col1":[np.NaN,"Cat","Cheese"],
                   "col2":["Dog","Cheese","Dog"],
                   "col3":[np.NaN,"Cat","Dog"]})

copy_mask = df.isnull()

df = df.bfill()

same_mask = df!=df.iloc[0]

df[same_mask]+=" (Not same)"
df[copy_mask]+=" (Copy)"

print (df)

                col1               col2            col3
0         Cat (Copy)                Dog      Cat (Copy)
1                Cat  Cheese (Not same)             Cat
2  Cheese (Not same)                Dog  Dog (Not same)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...