我有一个熊猫数据框,其中包含“ 01:00”之类的列的值。我想从中减去1,表示“ 01:00”将是“ 00:00”。谁能帮忙
答案 0 :(得分:2)
您可以使用timedeltas
:
df = pd.DataFrame({'col':['01:00', '02:00', '24:00']})
df['new'] = pd.to_timedelta(df['col'] + ':00') - pd.Timedelta(1, unit='h')
df['new'] = df['new'].astype(str).str[-18:-13]
print (df)
col sub
0 01:00 00:00
1 02:00 01:00
2 24:00 23:00
如果所有string
的格式为01:00
到24:00
,则map
的另一种更快的解决方案:
L = ['{:02d}:00'.format(x) for x in range(25)]
d = dict(zip(L[1:], L[:-1]))
df['new'] = df['col'].map(d)
print (df)
col new
0 01:00 00:00
1 02:00 01:00
2 24:00 23:00
答案 1 :(得分:0)
似乎您想做的是从存储在数据框中作为字符串的时间中减去一个小时。您可以执行以下操作:
from datetime import datetime, timedelta
subtract_one_hour = lambda x: (datetime.strptime(x, '%H:%M') - timedelta(hours=1)).strftime("%H:%M")
df['minus_one_hour'] = df['original_time'].apply(subtract_one_hour)