python - Pandas如何将列按日期时间移动到不在索引中的日期时间

标签 python pandas dataframe datetime

我想将 pandas 列移动一段时间,并重新索引数据帧以适应此移动。 采用以下数据框:

df = pd.DataFrame({"Col1": [10, 20, 15, 30, 45],
                   "Col2": [13, 23, 18, 33, 48],
                   "Col3": [17, 27, 22, 37, 52]},
                  index=pd.date_range("11:00", "13:00", freq="30min"))

我想将 Col1 移动 15 分钟,并更新数据帧的日期时间索引以允许这些新值。但是,如果我将 Col1 移动 15 分钟,您可以看到,因为它与索引不对齐,所以整个列都设置为 NaN 值:

df["Col1"] = df["Col1"].shift(15, freq="T")
print(df)


                      Col1  Col2  Col3
2021-03-25 11:00:00   NaN    13    17
2021-03-25 11:30:00   NaN    23    27
2021-03-25 12:00:00   NaN    18    22
2021-03-25 12:30:00   NaN    33    37
2021-03-25 13:00:00   NaN    48    52

我希望数据框看起来像这样:

                     Col1  Col2  Col3
2021-03-25 11:00:00   NaN  13.0  17.0
2021-03-25 11:15:00  10.0   NaN   NaN
2021-03-25 11:30:00   NaN  23.0  27.0
2021-03-25 11:45:00  20.0   NaN   NaN
2021-03-25 12:00:00   NaN  18.0  22.0
2021-03-25 12:15:00  15.0   NaN   NaN
2021-03-25 12:30:00   NaN  33.0  37.0
2021-03-25 12:45:00  30.0   NaN   NaN
2021-03-25 13:00:00   NaN  48.0  52.0
2021-03-25 13:15:00  45.0   NaN   NaN

(我使用以下代码创建的:)

df = pd.DataFrame({"Col1": [float('nan'), 10, float('nan'), 20, float('nan'), 15, float('nan'), 30, float('nan'), 45],
                   "Col2": [13, float('nan'),  23, float('nan'), 18, float('nan'), 33, float('nan'), 48, float('nan')],
                   "Col3": [17, float('nan'), 27, float('nan'), 22, float('nan'), 37, float('nan'), 52, float('nan')]},
                  index=pd.date_range("11:00", "13:15", freq="15min"))

如果有任何建议,我们将不胜感激!

最佳答案

使用 concat 检查

out = pd.concat([df.pop("Col1").shift(15, freq="T"),df],axis=1)
Out[478]: 
                     Col1  Col2  Col3
2021-03-24 11:00:00   NaN  13.0  17.0
2021-03-24 11:15:00  10.0   NaN   NaN
2021-03-24 11:30:00   NaN  23.0  27.0
2021-03-24 11:45:00  20.0   NaN   NaN
2021-03-24 12:00:00   NaN  18.0  22.0
2021-03-24 12:15:00  15.0   NaN   NaN
2021-03-24 12:30:00   NaN  33.0  37.0
2021-03-24 12:45:00  30.0   NaN   NaN
2021-03-24 13:00:00   NaN  48.0  52.0
2021-03-24 13:15:00  45.0   NaN   NaN

关于python - Pandas如何将列按日期时间移动到不在索引中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66792507/

相关文章:

python - Django REST Framework中ViewSet的设置页面

python - numpy 中不按排序顺序的掩码值

python - Pandas (键,值)数据,将键值的重复实例移动到新列中

pandas - 对数据框 pandas python 执行多个操作

python - 如何删除 pandas Dataframe 中的 "mirror copy"行?

python - 如何从数据帧中的列中减去标量值并仅选择满足某些条件的行

python - 屏幕命令和python

Python Pandas : convert a column to a string?

python - hvplot.heatmap 与 Pandas 数据框 : How to specify value dimensions?

python - 将两个 numpy 数组转换为数据帧