Я пытаюсь выполнить простую задачу: создать новый столбец в кадре данных Pandas на основе условий других столбцов.Я просматривал другие посты (например, этот очень популярный , но также и другие, которые использовали разные подходы), но безуспешно.
Проблема, с которой я столкнулся сейчас, заключается в том, что только last значение, определенное в моей функции, возвращается в новом столбце
Например:
У меня есть следующий столбец:
x
1
2
3
Я хочу добавитьновый столбец меток таким образом:
x size
1 Small
2 Medium
3 Large
Вот код самой последней попытки:
import pandas as pd
import numpy as np
df = pd.read_csv('blah.csv')
def size (row):
if row['rQ7'] == 1:
return 'Small'
if row['rQ7'] == 2:
return 'Medium'
if row['rQ7'] == 3:
return 'Large'
return -99
'''
I have also tried breaking this into
else:
return -99
but it doesn't work. '''
df['size'] = df.apply (lambda row: size (row), axis=1)
Теперь, когда я не получаю никаких ошибок, когда я применяю функцию кДля фрейма данных он возвращает только последнее значение, то есть -99:
x size
1 -99
2 -99
3 -99
Это также верно для других функций, которые я пробовал, и когда я пытался использовать df.loc[]
, Python не копировал любые значений для нового столбца, хотя ошибок не было.
Я растерялся и растерялся: для меня, и, основываясь на других примерах, которые я пробовал, представляется код должно работать.
Любая помощь очень ценится.