最有效的方法是对数据帧中的每一列进行一次差分并重新排序

2024-09-30 18:20:26 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有一个数据帧,其中有几个列。我想创建一个新的数据帧,或者用该列的差异替换这个数据帧中Timestampy_pred之间的列,但是我希望最终结果保持相同的顺序。因此,CLES12Z将被前一CLES12Z行和当前CLES12Z行的diff所替换,并且将对y\u pred之前的每一列执行该操作

到目前为止,我尝试了以下方法:

columnend = data.columns.get_loc('y_pred')

for e, col in enumerate(data.columns):
    if e < columnend and (e>0):
        print(col)
        data[col+'Diff'] = data[col]-data[col].shift(1)
        data.drop([col],axis=1,inplace=True)

但我注意到这只会将所有新列放在末尾,然后Id必须使用整个数据帧

我想知道有没有更直接或更有效的方法? enter image description here


Tags: columns数据方法fordataget顺序diff
1条回答
网友
1楼 · 发布于 2024-09-30 18:20:26

希望这对你的数据有用,但我认为这是正确的方向。当然,我们将丢失y_pred右侧列的第一行,因为diff()将在那里创建Nan

col_end = df.columns.get_loc('y_pred')
col_list = df.columns.tolist()[:col_end]
df = df[col_list].diff().dropna().join(df.iloc[1:, col_end + 1:])
df.reset_index(drop=True, inplace=True)

编辑

如果需要时间戳列保持不变:

col_end = df.columns.get_loc('y_pred')
col_list = df.columns.tolist()[:col_end]
df = df[col_list].diff().join(df.loc[:, col_end + 1:])

相关问题 更多 >