在数据框中创建新列并通过计算某些列的连续行的差异来填充

问题描述 投票:0回答:1

我有一个包含 A B 和 C 列的数据框。其中 A= 时间序列,B = ID,C = 利用率。

我的输出正在根据特定 id 的时间序列数据的长度在数据帧中生成新列,例如(Col1、Col2、Col3 和 Col4)。我能够使用 .diff 方法实现第一列,但无法执行从 col1 到 col2 等值的转换。任何有关如何为每个唯一 ID 实现此目的的帮助将不胜感激。

A B C col1 col2 col3 col4 0 1 a a-c) (c-e) e-g g 1 1 c (c-e) (e-g) g 2 1 e (e-g) g 3 1 克

enter image description here

pandas dataframe loops multiple-columns diff
1个回答
0
投票

您可以使用:

s = df['B'].diff(-1).fillna(df['B'])

for x in df.index:
    df[f'col{x+1}'] = s.shift(-x)

或者:

s = df['B'].diff(-1).fillna(df['B'])

out = df.join(pd.concat([s.shift(-x).rename(x+1) for x in df.index], axis=1).add_prefix('col'))
© www.soinside.com 2019 - 2024. All rights reserved.