熊猫 - 圆形日期为30分钟

zip*_*ipa 2 python datetime pandas

我构建了这个数据帧:

import pandas as pd
from pandas.compat import StringIO

temp = '''A,B
A,23:59:32.897000
B,17:36:09.182000
C,21:56:57.325000
D,06:16:24.482000'''

df = pd.read_csv(StringIO(temp))
df['B'] = pd.to_datetime(df['B']).dt.time
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有可能在30分钟的时间间隔内缩小输出时间:

A,B
A,23:30:00.000000
B,17:30:00.000000
C,21:30:00.000000
D,06:00:00.000000
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

jez*_*ael 5

你需要dt.floordt.time:

df['B'] = pd.to_datetime(df['B']).dt.floor('30T').dt.time
print (df)
   A         B
0  A  23:30:00
1  B  17:30:00
2  C  21:30:00
3  D  06:00:00
Run Code Online (Sandbox Code Playgroud)

它也适用于timedeltas:

df['B'] = pd.to_timedelta(df['B']).dt.floor('30T')
print (df)
   A        B
0  A 23:30:00
1  B 17:30:00
2  C 21:30:00
3  D 06:00:00

print (df.dtypes)
A             object
B    timedelta64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)