首页 > 解决方案 > 删除 timedelta 对象中的天数

问题描述

dataframe我在减去两次后创建的熊猫中有一个列。我现在有一个timedelta像这样的对象-1 days +02:45:00。我只需要删除 -1 天并希望它是02:45:00. 有没有办法做到这一点?

标签: pythonpandasdatetimetimedelta

解决方案


我认为您可以减去days转换为 timedeltas:

td = pd.to_timedelta(['-1 days +02:45:00','1 days +02:45:00','0 days +02:45:00'])
df = pd.DataFrame({'td': td})

df['td'] = df['td'] - pd.to_timedelta(df['td'].dt.days, unit='d')

print (df.head())

        td
0 02:45:00
1 02:45:00
2 02:45:00

print (type(df.loc[0, 'td']))
<class 'pandas._libs.tslibs.timedeltas.Timedelta'>

或者将 timedeltas 转换为字符串并在days和之间提取字符串.

df['td'] = df['td'].astype(str).str.extract('days (.*?)\.')
print (df.head())
          td
0  +02:45:00
1   02:45:00
2   02:45:00

print (type(df.loc[0, 'td']))
<class 'str'>

推荐阅读