Python:在数据框架内处理列

Python:在数据框架内处理列,python,pandas,dataframe,Python,Pandas,Dataframe,晚上好, 有没有可能在一个数据帧中用两列进行计算,然后用拟合结果添加第三列 数据帧(原件): 或者更具体地说……是否有可能获得两倍的差值(time_b-time_a)并创建一个 数据帧末尾的新列(time_c) 数据帧(新): 谢谢,晚安 如果列的格式为datetime或timedelta格式: # New column is a timedelta object df["time_c"] = (df["time_b"] - df["time_a"]) 如果列的格式为datetime.time

晚上好,

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

数据帧(原件):

或者更具体地说……是否有可能获得两倍的差值(time_b-time_a)并创建一个 数据帧末尾的新列(time_c)

数据帧(新):


谢谢,晚安

如果列的格式为
datetime
timedelta
格式:

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

如果列的格式为
datetime.time
格式(看起来是这样的):

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

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

time
列的类型是什么?在此之前,数据类型是“datetime.time”,您可能希望将其转换为
timedelta
df[“time\u b”]=pd.to\u timedelta(df[“time\u b”])
无需@GrzegorzSkibinski–默认情况下,新列为timedelta。假设输入列都是
timedelta
(这就是我的意思)。@GrzegorzSkibinski不知道我做错了什么,但我收到了一条错误消息,说:“不支持的操作数类型-:'datetime.time'和'datetime.time'。不知道这是否重要,但我正在将数据从PostgreSQL数据库获取到Django项目中。使用命令“read_frame”用于我的查询。您能验证@finethen列的数据类型吗
# New column is a timedelta object
df["time_c"] = (df["time_b"] - df["time_a"])
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"]