【问题标题】:Replace Pandas Dataframe Values with Date用日期替换 Pandas 数据框值
【发布时间】:2021-08-09 15:27:03
【问题描述】:

我有一个时间序列数据框,其中日期为索引,到期天数为“DTM”值。用实际日期替换这些 DTM 值的最佳方法是什么(将现有值添加到日期索引行日期)?

例如:将 20 天添加到 1990-01-02 = 1990-01-22 作为第一行/第一列值。

谢谢!

【问题讨论】:

    标签: python pandas dataframe date


    【解决方案1】:

    创建与您发布的类似的数据框:

    import pandas as pd
    array = {'Date': ['1990-01-02', '1990-01-03'],
             'CL1': [20,19],
             'CL2': [49,48], 'CL3': [77,76]}
    df = pd.DataFrame(array)
    df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
    df = df.set_index('Date')
    df
    

    这给出了:

               CL1  CL2 CL3
    Date            
    1990-01-02  20  49  77
    1990-01-03  19  48  76
    

    现在这是您所追求的解决方案:

    from datetime import timedelta
    for col in df.columns:
        df[col] = df.index + pd.to_timedelta(df[col], unit='d') 
    df
    

    这给出了:

                    CL1          CL2       CL3
    Date            
    1990-01-02  1990-01-22  1990-02-20  1990-03-20
    1990-01-03  1990-01-22  1990-02-20  1990-03-20
    

    【讨论】:

    • 感谢您的快速回答。我尝试了您的代码,但收到此错误:无效类型 。必须是 int 或 float。
    • 请在此处发布 df.dtypes 的结果
    • CL1 float64 CL2 float64 CL3 float64 CL4 float64 CL5 float64 CL6 float64 CL7 float64 CL8 float64 CL9 float64 CL10 float64 CL11 float64 CL12 float64 dtype:object
    • 再次尝试代码。出现拼写错误
    • 是的,我已经改变了它,但它仍然给我这个错误。 (df1 也是错字吗?)
    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多