Лямбда-операции в Pandas - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть два столбца часов и минут, которые хранятся отдельно в столбцах: a и b. Я хочу вычислить сумму обоих в терминах минут (DURATION).

. Чтобы преобразовать часы в минуты, я использовал следующее :

        train['duration']=train.a.apply(lambda x:x*60)

Теперь я хочу добавить минуты во вновь созданный столбец продолжительности.

        So that my final value is duration=(a*60)+b

Я не могу выполнить эту операцию, используя лямбду, а l oop занимает вечность выполнить В pandas.

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

Вы можете сделать это с помощью лямбды следующим образом.

import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
df["sum"] = df.apply(lambda row: row.x + row.y, axis=1)
print(df)

Это даст следующий вывод:

   x  y  sum
0  1  4    5
1  2  5    7
2  3  6    9

Надеюсь, это поможет. Вы можете сделать это, используя списковое понимание, так как это будет быстро или по предложению @Karl Olufsen.

0 голосов
/ 06 апреля 2020

Лучше всего использовать векторизованный код, который будет быстрее, чем применить

df['duration_in_min'] = df['hour'] * 60 + df['min']

Временная сложность различных операций от лучших (самые быстрые) к худшим (самые медленные) составляет:

Процедуры Cython <Векторизованный код <apply <itertuples <iterrows </p>

0 голосов
/ 06 апреля 2020

Pandas - очень мощный модуль с аккуратными функциями. Если вы хотите просто добавить значения одного столбца к значениям в другом, соответственно, вы можете просто сделать + операцию над столбцами. Вот мой пример:

import pandas as pd

df = pd.DataFrame({"col1":[1,2,3,4], "col2":[10,20,30,40]})

df["sum of 2 columns"] = df["col1"] + df["col2"]

print(df)

И это вывод:

   col1  col2  sum of 2 columns
0     1    10                11
1     2    20                22
2     3    30                33
3     4    40                44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...