WedX - журнал о программировании и компьютерных науках

Поиск способа эффективного выполнения вычислений для определенного столбца DataFrame

Я пытаюсь просмотреть конкретный столбец Pandas DataFrame и пытаюсь сделать следующее:

col0 col1   col2
int0 float0 str0
int1 float1 str0
int2 float2 str1

Я пытаюсь просто перебирать DataFrame построчно в этом столбце, но это не кажется эффективным. Лямбды - это вариант, но я не уверен, есть ли что-то вроде "понимания списка" для столбцов DataFrame ( насколько я понимаю, это серия Pandas).

Если, скажем, DataFrame определен как df, то я хочу сделать что-то вроде:

for row in df:
    if df['col2'] == str0:
        # do some calculation for all str0 types
    elif df['col2'] == str1:
        # do another calculation for all str1 types
    else:
        # do another calculation for all other types (which are actually str2 types implied by the if-elif-else statement)

Я пытаюсь повторить это, чтобы получить отдельную матрицу NumPy, которая создаст строку NumPy, соответствующую соответствующей строке DataFrame. При проверке условия для «col2» будет выполнен отдельный расчет в зависимости от его значения, и будет сгенерирована строка для соответствующего массива NumPy.

Пожалуйста, дайте мне знать, есть ли эффективный способ (как с точки зрения канонического, Pythonic кодирования, так и эффективности времени и памяти)! Вся помощь будет оценена по достоинству.


  • Сколько различных строковых значений у вас есть? Есть более эффективный способ сделать это, чем цикл for. + Какие расчеты вы делаете? Вы применяете значение в новом столбце? 19.08.2019
  • Другая идея, которая у меня была, заключалась в использовании лямбда-выражений для применения различных вычислений для каждого строкового значения. В этом случае у меня есть только 3 строковых значения, поэтому было бы гораздо лучше эффективно применить вычисление; тем не менее, масштабируемые идеи также были бы очень полезны (скажем, если бы для строк было 1000 возможных значений) 20.08.2019

Ответы:


1

Это больше похоже на np.select проблему

condition = [df['col2'] == str0, df['col2'] == str1...]
Target = [function1 , function2...]

df['NewCol'] = np.select(condition , Target , default = np.nan )
19.08.2019

2

Проще всего с точки зрения обслуживания было бы создать такую ​​​​функцию, как:

def fn(x):
    if x < 5:
        return x * 2
    else:
        return x * 3

А затем примените его к своей колонке:

df["col2"].apply(fn)
19.08.2019

3

Вы можете начать с выделения строк, соответствующих каждому значению столбца col2.

>>> df = pd.DataFrame(dict(col0=[0,1,2], col1=[3.0, 4.0, 5.0], col2=['str0', 'str0', 'str1']))
>>> col2_elm_to_df = {col2_elm: group_df for col2_elm, group_df in df.groupby('col2')}
>>> col2_elm_to_df
{
    'str0':          col0  col1  col2
               0     0     3.0   str0
               1     1     4.0   str0, 

    'str1':          col0  col1  col2
               2     2     5.0   str1
}
20.08.2019
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]