Python:在数据框架内处理列

2024-06-16 10:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

晚上好,

有没有可能在一个数据帧中用两列进行计算,然后用拟合结果添加第三列

数据帧(原件):

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

或者更具体地说……是否有可能获得两倍的差值(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

谢谢,晚安


Tags: 数据nametime原件末尾晚安差值
1条回答
网友
1楼 · 发布于 2024-06-16 10:25:37

如果您的列采用datetimetimedelta格式:

# 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)

或者,您可以通过首先转换为字符串来转换为时间增量:

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"]

相关问题 更多 >