Правильный синтаксис для условного оператора в пандах - PullRequest
0 голосов
/ 27 июня 2019

У меня есть условное заявление, что я пытаюсь тренироваться в пандах в Анаконде. Я установил numpy как np.

Мне нужно создать новое поле «Текст» и, если существующее «усеченное» поле имеет значение «Ложь», использовать строку в существующем поле «Текст». В противном случае (или если значение поля «усечено» равно «True», используйте строку в существующем поле «extended_tweet.full_text».

Попытка следовать инструкциям на этой странице, но это не прямая параллель, так как мой «выбор» - это значения других полей, а не заданная строка. Pandas условное создание столбца серии / кадра данных

Вот мой код:

conditions = [
    (df['truncated'] == 'False'),
    (df['truncated'] == 'True')]
choices = ['text'], ['extended_tweet.full_text']
df['Text'] = np.select(conditions, choices, default='null')

После этого все значения 'Text' будут 'null'

Я пробовал варианты для кода опций 'choices', и думаю, проблема в том, как я указываю опции в строке выбора (в примере кода, который я слежу, используются данные значения 'string') , Но я не могу разобраться, как правильно указать, что я хочу получить строковые значения в указанных полях, используемых в новом поле «Текст».

Любая помощь с благодарностью.

ЧАСТЬ 2: ОТВЕТ НА ВВОД НИЖЕ:

Спасибо. Я не был знаком с минимальными воспроизводимыми примерами.

Вот что я придумала:

df5 = pd.DataFrame([["True", "Hello", "fine"], ["False", 'Howdy', 'good'], ["False", "Hi", "bien"]], columns=['truncated', 'text', 'extended_tweet.full_text'])
print(df5)
  truncated   text extended_tweet.full_text
0      True  Hello                     fine
1     False  Howdy                     good
2     False     Hi                     bien
conditions = [
    (df5['truncated'] == 'False'),
    (df5['truncated'] == 'True')]
choices = ['text'], ['extended_tweet.full_text']
df5['Text'] = np.select(conditions, choices, default='null')
df5['Text']
0    extended_tweet.full_text
1                        text
2                        text
Name: Text, dtype: object

Однако он возвращает строки для полей 'text' и 'extended_tweet.full_test', а не значения в этих столбцах.

Я попробовал два предложения, которые не вижу сейчас, когда нахожусь в режиме редактирования. Но вот мои результаты:

Я изменил строку 'выборы' на:

choices = ['text', 'extended_tweet.full_text']

И оно вернуло это сообщение об ошибке, и каждое значение 'Text' было 'null':

/anaconda3/lib/python3.7/site-packages/pandas/core/ops.py:1649: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  result = method(y)

Я тоже пробовал эту версию:

conditions = [~df['truncated'],df['truncated']]
choices = ['text'], ['extended_tweet.full_text']
df['Text'] = np.select(conditions, choices, default='null')

Но, как и в моем минимальном примере, он генерировал строки 'text' и 'extended.tweet_full.text', а не значения в этих полях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...