У меня есть условное заявление, что я пытаюсь тренироваться в пандах в Анаконде. Я установил 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', а не значения в этих полях.