【问题标题】:How to remove time from datetime index string如何从日期时间索引字符串中删除时间
【发布时间】:2021-04-09 17:38:45
【问题描述】:

我的问题是如何从索引字符串中删除时间部分。我正在导入包含分钟股票数据的 csv,代码如下所示:

import pandas as pd

df = pd.read_csv(f'/Volumes/Seagate Portable/S&P 500 List/AAPL.txt')

df.columns = ['Extra', 'Dates', 'Open', 'High', 'Low', 'Close', 'Volume']

df.Dates = pd.to_datetime(df.Dates)
df.set_index('Dates', inplace=True)
df = df.between_time('9:30', '16:00')
df.drop(['Extra', 'Open', 'High', 'Volume', 'Low'], axis=1, inplace=True)
df = df.groupby(pd.Grouper(freq='D')).agg({'Close':'last'})
df.index[0]

这会修改数据框以查找交易日的最后收盘价。对此的输出是:

Timestamp('2020-01-02 00:00:00', freq='D')

所以我的问题是我想从字符串中删除时间 (00:00:00)。我不想做类似的事情:

` df.index = df.index.date)` 

 df['date'] = pd.to_datetime(df.index).dt.date

这是因为 df.index[0] 的输出将是:datetime.date(2020, 1, 2) 这不是我想要的。所以我尝试的是

for df_dates in df.index:
    string_df = f"{df_dates}"
    split_string_df = string_df.split(' ')
    df_dates = split_string_df[0]
    df.index[df_dates] = df_dates

这给了我错误TypeError: Index does not support mutable operations 所以我正在寻找一个代码,它将删除字符串的时间部分,以便在我可以索引出df['2020-2-12'] 而不是df[datetime.date(2020, 1, 2)] 之后(我不确定,假设这意味着修改显示而不是实际的索引,但我不知道。)

【问题讨论】:

    标签: python pandas datetime indexing datetime-format


    【解决方案1】:

    你试过了吗:

    indexes =[]
    for df_dates in df.index:
        string_df = f"{df_dates}"
        split_string_df = string_df.split(' ')
        df_dates = split_string_df[0]
        indexes.append( df_dates)
    df.index = indexes
    

    问题是您尝试通过调用df.index[<something>] = <otherthing> 来按索引修改索引,因为索引列表是不可变的,必须全部修改..

    【讨论】:

    • 这很有效,谢谢!没想到,感谢您的帮助
    • 很高兴...!
    • 是的,很抱歉,当您提出答案时,我正准备好,我只需要等一下,因为它不会让您立即接受答案,我忘了回来。我的道歉
    猜你喜欢
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2010-10-25
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多