DocDate DocTime DocEntry DocNum CardName U_OrdrType \
0 2019-01-01 1511 1 100001 xyz Company Advance
1 2019-01-01 1512 2 100002 xyz Company Advance
2 2019-01-01 1514 3 100003 xyz Company Advance
3 2019-01-01 1516 4 100004 xyz Advance
從 SQL 資料庫中檢索 dataq,其中時間為整數格式 (1511) 我想將時間轉換為 15:11 請注意,某些位置午夜 12 只表示 (0) 我想要 0 作為 00:00
uj5u.com熱心網友回復:
如果你想要它作為字串,那么你可以使用apply運行自己的函式來轉換它
import pandas as pd
data = {
'DocTime': [1511, 1512, 1514, 1516, 0]
}
def convert(val):
hours = val // 100
minutes = val % 100
return f"{hours:02}:{minutes:02}"
df = pd.DataFrame(data)
df['DocTimeString'] = df['DocTime'].apply(convert)
print(df)
結果:
DocTime DocTimeString
0 1511 15:11
1 1512 15:12
2 1514 15:14
3 1516 15:16
4 0 00:00
您也可以使用datetime.time()- 這樣您以后就可以簡單地計算時間之間的差異 - 但它可能會用seconds. 但是您仍然可以使用此值strftime來生成字串。
import pandas as pd
import datetime
data = {
'DocTime': [1511, 1512, 1514, 1516, 0]
}
def convert(val):
hours = val // 100
minutes = val % 100
return datetime.time(hours, minutes)
df = pd.DataFrame(data)
df['DocTimeDatetime'] = df['DocTime'].apply(convert)
df['DocTimeString'] = df['DocTimeDatetime'].apply(lambda dt:dt.strftime('%H:%M'))
#df['DocTimeString'] = df['DocTimeDatetime'].dt.strftime('%H:%M') # doesn't work because it is not `Datetime` object
print(df)
結果:
DocTime DocTimeDatetime DocTimeString
0 1511 15:11:00 15:11
1 1512 15:12:00 15:12
2 1514 15:14:00 15:14
3 1516 15:16:00 15:16
4 0 00:00:00 00:00
最終,您可以將所有值轉換為具有 4 位數字的字串(因此0必須是0000),然后您可以將其決議為%H%M沒有:
import pandas as pd
import datetime
data = {
'DocTime': [1511, 1512, 1514, 1516, 0]
}
df = pd.DataFrame(data)
# convert to strings with 4-digits
df['DT'] = df['DocTime'].apply(lambda x: f"{x:04}")
# parse text as `%H%M` - and get only `time`
df['DT'] = pd.to_datetime(df['DT'], format='%H%M').dt.time
print(df)
結果
DocTime DT
0 1511 15:11:00
1 1512 15:12:00
2 1514 15:14:00
3 1516 15:16:00
4 0 00:00:00
uj5u.com熱心網友回復:
要將資料作為時間序列處理,請創建一個日期時間列,例如
import pandas as pd
# 1 - assumed input / example
df = pd.DataFrame({'DocDate': ["2019-01-01", "2019-01-01", "2019-01-01", "2019-01-01"],
'DocTime': [0, 1511, 1512, 1514]})
# 2 - DocTime to string (could be integrated in the next step)
df['DocTime'] = df['DocTime'].astype(str).str.zfill(4)
# 3 - now we can create datetime!
df['DocDateTime'] = pd.to_datetime(df['DocDate'] ' ' df['DocTime'])
print(df)
DocDate DocTime DocDateTime
0 2019-01-01 0000 2019-01-01 00:00:00
1 2019-01-01 1511 2019-01-01 15:11:00
2 2019-01-01 1512 2019-01-01 15:12:00
3 2019-01-01 1514 2019-01-01 15:14:00
uj5u.com熱心網友回復:
df['DocEntry'] = pd.to_datetime(df['DocEntry']).dt.strftime("%H:%M")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344876.html
下一篇:我如何擺脫年、月和日?[復制]
