【发布时间】: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