Skip to main content
 首页 » 编程设计

python之如何更改 pandas df 中特定行的时间戳

2025年05月04日23zhoujg

<分区>

我有一个 pandas df,它在同一 列 中包含不同的时间戳和 strings。示例如下:

一旦时间过了午夜,数据就会吐出这个奇怪的 351 代码,然后恢复到 12 小时时间。因此,第 5 行 的时间实际上是 12:01:42,第 8 行 的时间是 13:00:00。

我可以向这些时间戳添加 12 小时,但我需要删除前 3 个值。

我尝试通过索引适当的时间(午夜之后)并应用 [x[3:] for x in df] 来做到这一点。但这会删除此列中的字符串。所以 AA 和 BB 也被删除了。

我对如何在不删除未指定值的情况下实现这一点有些困惑。是否可以在午夜后选择适当的时间(仅时间戳),删除 351 并添加 12 小时而不丢失任何数据?

import pandas as pd 
 
k = 5 
N = 10 
 
d = ({'Time' : ['18:00:00','AA','BB', '23:00:00','AA','35112:01:42','AA','AA','35113:00:00','AA'], 
'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL','DEF','JKL'], 
'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx', 'xx', 1]}) 
 
df = pd.DataFrame(data=d) 

输出:

  Events Number1         Time 
0    ABC      xx     18:00:00 
1    DEF      xx           AA 
2    GHI       1           BB 
3    JKL      xx     23:00:00 
4    ABC      xx           AA 
5    DEF      xx  35112:01:42 
6    GHI       2           AA 
7    JKL      xx           AA 
8    DEF      xx  35113:00:00 
9    JKL       1           AA 

预期输出:

输出:

  Events Number1         Time 
0    ABC      xx     18:00:00 
1    DEF      xx           AA 
2    GHI       1           BB 
3    JKL      xx     23:00:00 
4    ABC      xx           AA 
5    DEF      xx     24:01:42 
6    GHI       2           AA 
7    JKL      xx           AA 
8    DEF      xx     25:00:00 
9    JKL       1           AA