迭代日期时间索引中的日期列表

时间:2018-05-12 18:45:46

标签: python pandas

我的初始数据框df:

                     discharge1  discharge2
datetime                                   
2018-04-25 18:37:00        5862        4427
2018-04-25 21:36:30        6421        4581
2018-04-25 22:13:00        5948        4779
2018-04-26 00:11:30        5703        4314
2018-04-26 02:27:00        4988        3868
2018-04-26 04:28:30        4812        3823
2018-04-26 06:22:30        4347        3672
2018-04-26 10:50:30        3896        3546
2018-04-26 12:04:30        3478        3557
2018-04-26 14:02:30        3625        3598
2018-04-26 15:31:30        3751        3606

我想要做的是让我的日期成为列表,数组或系列,我可以迭代列表中的所有元素。这样我就可以使用这些日期来访问另一个数据帧df_other中的行,最后将它们附加到一个新的数据帧df_new:

for date in date_list():
    df_new = df_new.append(df_other.iloc[df_other.index.get_loc(date)])

我的列表中的日期应该以。

的形式运行
df_new.append(df_other.iloc[df_other.index.get_loc('2018-04-25 18:37:00')])

我尝试使用df.index创建一个列表,但返回一个Datetimeindex,我只能访问每个日期

display(df.index[0])
Timestamp('2018-04-25 18:37:00')

其中Timestamp部分破坏了我的.append调用

还尝试了df.index.tolist(),但返回了

列表
[Timestamp('2018-04-25 18:37:00'),...]

1 个答案:

答案 0 :(得分:1)

为什么不直接迭代数据帧的行并只使用索引值?

创建数据框:

data = [
['2018-04-25 18:37:00',       5862,        4427],
['2018-04-25 21:36:30',       6421,        4581],
['2018-04-25 22:13:00',       5948,        4779],
['2018-04-26 00:11:30',       5703,        4314],
['2018-04-26 02:27:00',       4988,        3868],
['2018-04-26 04:28:30',       4812,        3823],
['2018-04-26 06:22:30',       4347,        3672],
['2018-04-26 10:50:30',       3896,        3546],
['2018-04-26 12:04:30',       3478,        3557],
['2018-04-26 14:02:30',       3625,        3598],
['2018-04-26 15:31:30',       3751,        3606]
]

data = pd.DataFrame(data, columns=['datetime', 'discharge1', 'discharge2'])
data['datetime'] = data['datetime'].apply(pd.to_datetime)
data = data.set_index('datetime')

然后迭代索引和值:

for index, values in data.iterrows():
    print(index)

输出:

2018-04-25 18:37:00
2018-04-25 21:36:30
2018-04-25 22:13:00
2018-04-26 00:11:30
...