循环数据帧以通过递增值来移位列

  • 本文关键字:数据帧 循环 python dataframe
  • 更新时间 :
  • 英文 :


我正在尝试创建一个循环,该循环将采用转置的数据帧并执行以下操作:

  1. 将第一列下移1
  2. 将第二列下移2
  3. 将第三列下移3
  4. 将第四列下移4
  5. 用np.nan填空
  6. 添加由移位的列产生的其他行名

下面包含了所需的视觉结果。

这是我的代码:

import pandas as pd
import numpy as np
from datetime import datetime, timedelta
date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(3), freq='D')
np.random.seed(seed=1111)
data = np.random.randint(1, high=100, size=len(days))
data1 = np.random.randint(1, high=100, size=len(days))
data2 = np.random.randint(1, high=100, size=len(days))
data3 = np.random.randint(1, high=100, size=len(days))
df = pd.DataFrame({'Date': days, 'col2': data, 'col3': data1, 
'col4': data2, 'col5': data3})
df = df.set_index('Date')
df= df.T

## loop to shift rows down and fill with np.nan
#for i in range(0, df.shape[1]):
#    df = df.shift(1)  
print(df)

期望结果视觉

您可以枚举列名并将其传递给移位函数(+1(,因为它从零开始。

for c, col in enumerate(df.columns):
df[col] = df[col].shift(c+1)

最新更新