根据Pandas中一列的条件和另一列的值创建新列

dsekswqp  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(189)

我有一个DF,时间是以小时、分钟或毫秒给出的,time列是float类型,time_unit列表示它是以小时、分钟还是毫秒给出的。
我想创建一个计算秒数的新列,因此,我需要一个函数,它首先检查time_unit是什么,然后从time中获取值,并执行一些到秒的转换。
例如:

if df["time_unit"]="h":
   return df["time"]*60*60 # given hours as int
elseif: ...

我的df如下所示:

我想创建绿色列(秒)。那么,我如何在Pandas中做到这一点呢?

8e2ybdfx

8e2ybdfx1#

您可以创建Mapdict

d = {'h' : 60*60, 'min' : 60, 'ms' : 1/1000}

df['seconds'] = df['time_unit'].map(d) * df['time']
g52tjvyc

g52tjvyc2#

seconds = []
for i,r in df.iterrows():
  if r['time_unit'] == 'h':
    seconds.append(r['time']*3600)
  elif r['time_unit'] == 'min':
    seconds.append(r['time']*60)
  elif r['time_unit'] == 'ms':
    seconds.append(r['time']/1000)
df['seconds'] = seconds

我想这会有用的。

相关问题