我正在尝试创建一个循环,该循环将采用转置的数据帧并执行以下操作:
- 将第一列下移1
- 将第二列下移2
- 将第三列下移3
- 将第四列下移4
- 用np.nan填空
- 添加由移位的列产生的其他行名
下面包含了所需的视觉结果。
这是我的代码:
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)