python - 循环数据框以通过递增值来移动列
问题描述
我正在尝试创建一个循环,该循环将采用转置的数据帧并执行以下操作:
- 将第一列下移 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)
推荐阅读
- html - 如何将标题(标题)文本更改为大写?
- aframe - A-frame 不显示我的纹理
- javascript - 如何让 div 在顶部滚动后消失
- python - 如何获取 Dataflow Python 进程的线程转储?
- html - 按钮图标向右浮动不起作用
- spring-boot - 作为构建过程的一部分,我如何发布 springfox 生成的 swagger doc
- html - 文本重叠时放大图像(在图像中)
- python - matplotlib exact solution to a differential equation
- php - groupBy() 方法给出空结果 Yii2
- react-native - 更新以前的 StackNavigator 屏幕的正确方法是什么?