我有一个包含 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 克
您可以使用:
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'))