簡體   English   中英

如何在 Pandas DataFrame 中以小時和分鍾為單位切片時間

[英]How to slice the Time in Hours and Minutes in Pandas DataFrame

我正在嘗試從我的數據集中拆分時間列。 Time 列的值類似於“2324”而不是“23:24”。 我使用了這個命令 df['MINUTES']=df['MINUTES'].str[1:3]。 但它不能准確地工作,因為時間列是基於 24 小時的。 所以'2324'顯示為'23:32'這是不正確的。我如何將它們分成正確的方式。 請溫柔,我剛開始涉足 Python/DA 領域。

提前致謝! 阿尼爾

我不確定問題出在哪里,因為有 24 小時的時間不應該影響腳本。 這是一個似乎與預期的 output 匹配的示例:

import pandas as pd
df = pd.DataFrame({'Example':['1242','1342','1532','1643','1758','1821','1902','0004','2324']})
df['Hour'] = df['Example'].str[:2]
df['Minute'] = df['Example'].str[2:]
df['Time'] = df['Example'].str[:2] + ":" + df['Example'].str[2:]

這將生成以下 output:

  Example Hour Minute   Time
0    1242   12     42  12:42
1    1342   13     42  13:42
2    1532   15     32  15:32
3    1643   16     43  16:43
4    1758   17     58  17:58
5    1821   18     21  18:21
6    1902   19     02  19:02
7    0004   00     04  00:04
8    2324   23     24  23:24

這是您可以執行的操作:

df['MINUTES'].replace(['(?<=\d\d)(?=\d\d)'], ':', regex=True, inplace=True)


我們基本上是在告訴 python 在這個間隙中插入一個冒號':''(?<=\d\d)(?=\d\d)' ,它在每邊的兩位數之間。

讓我們測試一下:

import pandas as pd

df = pd.DataFrame({'MINUTES':['1234',
                              '7654',
                              '8766']})

df['MINUTES'].replace(['(?<=\d\d)(?=\d\d)'], ':',
                      regex=True,
                      inplace=True)

print(df)

Output:

  MINUTES
0   12:34
1   76:54
2   87:66

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM