【问题标题】:Looping a dataframe with datetime.date in the index Python在索引 Python 中使用 datetime.date 循环数据帧
【发布时间】:2021-03-24 22:18:56
【问题描述】:

我需要循环以下数据,保留第一行,并用第一行减去第二个值(然后用第三个值减去第二个值,依此类推):

Index of rows 0 1 ... 959 960
datetime.date(2021, 3, 1) -216.097205 -216.097205 ... -198.699325 -198.699325
datetime.date(2021, 3, 2) 76.512615 76.512615 ... -198.699325 -198.699325
datetime.date(2021, 3, 3) -645.633370 -645.633370 ... 637.719615 637.719615

拥有这个:

Index of rows 0 (first column) 1 ... 959 960
datetime.date(2021, 3, 1) -216.097205 -216.097205 ... -198.699325 -198.699325
datetime.date(2021, 3, 2) 292.6098 292.6098 ... 0 0
datetime.date(2021, 3, 3) -722.14 -722.14 ... 836.4189 836.4189

基本上我需要将第一个df的累积利润转换为单日盈亏的数据框。

已尝试使用此代码:

def cumdiff_RowDatetime(df,axis):
if axis==1 :
    for x, y in enumerate(df.columns):
        if x == 0:
            cf[y] = df[y]
        else:
            cf[y] = df[y] - df[df.columns[x - 1]]
    return cf
else :
    for x in enumerate(df.columns):
        for y in df.iterrows():
            if x == 0:
                cf[y] = df[y]
            else:
                cf[y] = df[y] - df[df.columns[x - 1]]
    return cf

AAATB=cumdiff_RowDatetime(AAAT,axis=0)

但我收到以下错误。 “KeyError: (datetime.date(2021, 3, 1), 0 -216.097205” 猜猜我的函数完全错误,或者行索引中的 datetime.date 有问题。

【问题讨论】:

    标签: python dataframe datetime for-loop


    【解决方案1】:

    这可以通过diff来完成:

    df = df.diff().fillna(df)
    

    结果:

    0 1 959 960
    datetime.date(2021, 3, 1) -216.097 -216.097 -198.699 -198.699
    datetime.date(2021, 3, 2) 292.61 292.61 0 0
    datetime.date(2021, 3, 3) -722.146 -722.146 836.419 836.419

    【讨论】:

    • 谢谢。我会赢得这 15 分,只是为了给你的答案投票! ;)
    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2021-07-23
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多