замена значений столбца (если он удовлетворяет условию) из значений другого существующего столбца - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть data frame, который состоит из 3 столбцов:

Id, Summary, Description

Я пытаюсь сделать, если какие-либо значения в Description точно соответствуют этой строке: «Это пустое описание»затем замените это содержимое на Summary.

Например:

До:

   Id     Summary         Description
0  1      Cool song       This is an empty description
1  2      It was ok       was ok because needed more melody
2  3      this was sick   This is an empty description
3  4      not a fan       i prefer classical over rock
4  5      alright         This is an empty description

После:

      Id     Summary         Description
   0  1      Cool song       Cool song
   1  2      It was ok       was ok because needed more melody
   2  3      this was sick   this was sick
   3  4      not a fan       i prefer classical over rock
   4  5      alright         alright

У меня есть код, который я использую работает, но мне интересно, есть ли лучший способ, потому что я получаю предупреждение:

Ввод:

 df.Description = np.where(df.Description == "This is an empty description", df.Summary, df.Description)

Вывод:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py:3643: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self[name] = value

1 Ответ

0 голосов
/ 01 марта 2019

Это действительно распространенное предупреждение, когда вы объединяете несколько операций индексации в Pandas.Подробнее об этом можно прочитать здесь .Если вы хотите использовать Pandas нативные методы, вы можете сделать что-то вроде ниже, не получая ошибок.

import pandas as pd

mask = (df.Description == "This is an empty description")
df.loc[mask, 'Description'] = df.Summary
...