Итерация по всем столбцам в кадре данных для умножения всех чисел меньше 1 на 100 - PullRequest
0 голосов
/ 12 марта 2020

У меня есть фрейм данных с несколькими столбцами, где мне нужно # обновить значения с формата 0.XX% до XX.XX%. в настоящее время у меня есть:

df['GLOBAL'] = np.where(df['GLOBAL']<1, df['GLOBAL']*100,  df['GLOBAL'])

, но для этого требуется новая строка для каждого имени столбца. Я пытаюсь перебрать все мои столбцы.

Я пытался написать простую функцию:

def update_ot(dataframe):
    for x in dataframe:
        if x < 1:
            return x *100
        else:
            return x

, но когда я применил ее:

df = df.apply(update_ot)

Я получаю эту ошибку:

TypeError: ("'<' not supported between instances of 'str' and 'int'", 'occurred at index category')

Ответы [ 2 ]

4 голосов
/ 12 марта 2020

Итерации по фрейму данных итерируют по столбцу names . Так что x в вашем l oop - это имя определенного столбца.

Но вам не обязательно нужен al oop. У фреймов данных также есть метод where, который работает аналогично numpy:

df.where(df >= 1, df * 100)

Обратите внимание, что значение изменяется, если условие false .

0 голосов
/ 12 марта 2020

Вы можете попробовать это

import pandas as pd 
foo = [{
'Language': 'Python',
'Percent grow': 56
}, {
'Language': 'Java',
'Percent grow': 34
}, {
'Language': 'C',
'Percent grow': 25
}, {
'Language': 'C++',
'Percent grow': 12
}, {
'Language': 'go',
'Percent grow': 5
}]

df = pd.DataFrame(foo, index=pd.RangeIndex(0, len(foo)))
print(df)

Начальное значение

       Language  Percent grow
      Python            56
        Java            34
           C            25
         C++            12
          go             5

Обновите ячейку в «Проценте роста», где значение меньше 6.

df.loc[df['Percent grow'] <6  ,'Percent grow']= df['Percent grow'] *100

print (df)

Результат

  Language  Percent grow
   Python            56
   Java              34
   C                 25
   C++               12
   go                500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...