重新索引 Pandas 数据框

Reindex a Pandas Dataframe

我在 Python 中有一个 pandas 数据框。

          datetime           machineID
0   2021-10-01 00:00:00        1.0
1   2021-10-01 00:00:00        2.0
2   2021-10-01 00:00:00        3.0
3   2021-10-01 00:00:00        4.0
4   2021-10-01 00:00:00        5.0
... ... ...
443 2021-10-07 12:00:00       28.0
444 2021-10-07 12:00:00       29.0
445 2021-10-07 12:00:00       30.0
446 2021-10-07 12:00:00       31.0
447 2021-10-07 12:00:00       32.0

从 2021-10-01 到 2021-10-07,此数据框中有 7 天。这是按照日期时间编入索引的,就像每个 machineID 一样,所有 machineID 都在该日期出现,然后在下一个日期出现所有 machineID,依此类推。

我想要的是,我想重新索引这个数据框,这样对于每个 machineID,所有 7 个日期都会出现,然后对于下一个 machineID 所有日期都会出现。像这样,

          datetime           machineID
0   2021-10-01 00:00:00        1.0
1   2021-10-02 00:00:00        1.0
2   2021-10-03 00:00:00        1.0
3   2021-10-04 00:00:00        1.0
4   2021-10-05 00:00:00        1.0
... ... ...
443 2021-10-03 12:00:00       32.0
444 2021-10-04 12:00:00       32.0
445 2021-10-05 12:00:00       32.0
446 2021-10-06 12:00:00       32.0
447 2021-10-07 12:00:00       32.0

我找不到任何方法。

您应该告诉 pandas 在您的自定义排序列上重新编制索引

df =  df.sort_values(by='datetime',ignore_index=True)

您可以简单地按 machineID 对数据帧进行排序,例如:

df = df.sort_values(by=['machineID'], ignore_index=True)

我想你可能正在寻找 df.sort_values()

df.sort_values(by=['machineID', 'datetime'])

您可能需要修改参数 以获得您想要的结果。

此处提供文档:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html