Я хотел испытать функциональность метода applymap
объекта Pandas DataFrame
. Вот Пример использования:Pandas DataFrame Метод ApplyMap
Пусть говорят, мой DataFrame df1
выглядит следующим образом:
Age ID Name
0 27 101 John
1 22 102 Bob
2 19 103 Alok
3 27 104 Tom
4 32 105 Matt
5 19 106 Steve
6 5 107 Tom
7 55 108 Dick
8 67 109 Harry
Теперь я хочу, чтобы создать переменную флаг с логикой, что если длина элемента меньше, чем 2, то флаг = 1 else flag = 0.
Чтобы запустить этот элемент, я хотел использовать метод applymap
. Так что я создал определенную пользователем функцию следующим образом:
def f(x):
if len(str(x))>2:
df1['Flag']=1
else:
df1['Flag']=0
Тогда я побежал df1.applymap(f)
, который дал:
Age ID Name
0 None None None
1 None None None
2 None None None
3 None None None
4 None None None
5 None None None
6 None None None
7 None None None
8 None None None
вместо создания переменной флаг со значением флага. Как достичь желаемой функциональности с помощью applymap
?
Можем ли мы использовать имя переменной DataFrame или инструкцию pandas внутри пользовательской функции? I.e., является df1['Flag']
, действительным в определении f()
?
Спасибо. Просто продолжение. В операторе df1 ['Flag'] = df1.applymap (f) .sum (axis = 1) .astype (bool), когда мы суммируем его по столбцам, тогда первая строка должна иметь значение 2 (1 + 1 +0) ?. Тогда bool должен быть истинным обрядом? Тогда почему это ложь? – Baktaawar
да, извините - я скопировал результат из функции 'all', но написал в функции' sum' (bool (sum) дает True для всех строк, что не является хорошим примером). Исправлено. – Bonlenfum
@ Baktaawar, если это решит вашу проблему, то в дополнение к «спасибо» было бы здорово, если бы вы могли принять ответ! – Owen