【问题标题】:Remove date from datatime index in pandas从熊猫的日期时间索引中删除日期
【发布时间】:2023-01-12 01:15:34
【问题描述】:

我想从 pandas 的 datetime 函数中删除日期,下面的代码工作得很好。

df= pd.read_csv('data.csv')
df['Value']= df.Value.astype(float)
df['Time'] = pd.to_datetime(df['Time']).dt.time
df.set_index('Time',inplace=True)

但是在那之后,当我尝试使用 .loc 函数根据时间选择行时,它给了我以下错误。

df_to_plot = df.loc['09:43:00':'13:54:00']

TypeError: '<' not supported between instances of 'datetime.time' and 'str'

但是相同的代码在没有 .dt.time 的情况下也能正常工作,如下所示:

df= pd.read_csv('data.csv')
df['Value']= df.Value.astype(float)
df['Time'] = pd.to_datetime(df['Time'])
df.set_index('Time',inplace=True)
df_to_plot = df.loc['2022-07-28 09:43':'2022-07-28 13:54']

如何删除日期并仍然根据时间选择行? 谢谢你。

【问题讨论】:

  • 您可以考虑使用dt.strftime("%H:%M:%S")而不是dt.time将时间值存储为字符串而不是datetime.time

标签: python pandas datetime indexing pandas-loc


【解决方案1】:

出现 TypeError 是因为 df['Time'] = pd.to_datetime(df['Time']).dt.time 将 df['Time'] 转换为 datetime.time 对象,而在您的 loc 语句中, '09:43:00':'13:54:00' 是一个字符串。 尝试这个:

df['Time'] = pd.to_datetime(df['Time']).dt.time.astype(str)

【讨论】:

    【解决方案2】:

    尝试使用 df.index = df.index.time

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-19
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2013-07-20
      相关资源
      最近更新 更多