У меня есть простой фреймворк с pandas, тогда я переименую имена переменных в 'a' и 'b'.Назначение нового имени столбца и создание нового столбца условно в пандах теперь работает?
import pandas as pd
import numpy as np
df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
df.columns = ['a', 'b']
print df
df['color'] = np.where(df['b']=='Z', 'green', 'red')
print df
a b
0 Z A
1 Z B
2 X B
3 Y C
a b color
0 Z A red
1 Z B red
2 X B red
3 Y C red
Без df.columns переименованием линии, я получаю
import pandas as pd
import numpy as np
df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
#df.columns = ['a', 'b']
#print df
df['color'] = np.where(df['Set']=='Z', 'green', 'red')
print df
Set Type color
0 Z A green
1 Z B green
2 X B red
3 Y C red
я хочу, и следовало ожидать первого набора кода для получения «зеленого зеленый красный красный», но это не удалось, и я не» Знаю почему.
'np.where (ДФ [ 'B'] == 'Z', 'зеленый', 'красный')' Если не будет ли 'np.where (df ['a'] == 'Z', 'green', 'red') '? –
Хммм, похоже, он работает после переключения на «а», но я не понимаю, почему, не переписал ли я столбцу «Тип» в «а» и столбец «Установить» в «b»? Или «Задать» перейти до «Тип» из-за алфавитного порядка? – KubiK888
столбец a имеет символы «X, Y, Z», тогда как b имеет «A, B C». Выполнение сравнения 'df ['b'] == 'Z'', конечно, всегда возвращает' False'. Я думаю, вы просто неправильно читаете колонку a с помощью b. :) –