Python: работа со столбцами внутри pandas кадра данных - PullRequest
0 голосов
/ 23 апреля 2020

Добрый вечер,

можно ли рассчитать, скажем, с двумя столбцами внутри фрейма данных и добавить третий столбец с результатом подгонки?

Фрейм данных (оригинал):

name        time_a      time_b
name_a      08:00:00    09:00:00
name_b      07:45:00    08:15:00
name_c      07:00:00    08:10:00
name_d      06:00:00    10:00:00

Или быть уточненным c ... возможно ли получить разницу в два раза (time_b - time_a) и создать новый столбец (time_ c) в конце кадра данных?

Датафрейм (новый):

name        time_a      time_b      time_c
name_a      08:00:00    09:00:00    01:00:00
name_b      07:45:00    08:15:00    00:30:00
name_c      07:00:00    08:10:00    01:10:00
name_d      06:00:00    10:00:00    04:00:00

Спасибо и спокойной ночи!

1 Ответ

1 голос
/ 23 апреля 2020

Если ваши столбцы в формате datetime или timedelta:

# New column is a timedelta object
df["time_c"] = (df["time_b"] - df["time_a"])

Если ваши столбцы в формате datetime.time (который, по-видимому, они есть) :

def time_diff(time_1,time_2):
  """returns the difference between time 1 and time 2 (time_2-time_1)"""
  now = datetime.datetime.now()
  time_1 = datetime.datetime.combine(now,time_1)
  time_2 = datetime.datetime.combine(now,time_2)
  return time_2 - time_1

# Apply the function
df["time_c"] = df[["time_a","time_b"]].apply(lambda arr: time_diff(*arr), axis=1)

Кроме того, вы можете преобразовать в timedelta, сначала преобразовав в строку:

df["time_a"]=pd.to_timedelta(df["time_a"].astype(str))
df["time_b"]=pd.to_timedelta(df["time_b"].astype(str))
df["time_c"] = df["time_b"] - df["time_a"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...