更改熊猫数据框中列的所有值

时间:2018-08-01 16:44:04

标签: python-3.x pandas

我有一个熊猫数据框,其中包含“ 01:00”之类的列的值。我想从中减去1,表示“ 01:00”将是“ 00:00”。谁能帮忙

2 个答案:

答案 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:0024: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)