1

再会,

我需要一些建议我有两个数据框。一个包含数百行,另一个包含六个。两个帧的时间戳都被索引。我想将 df1 中的索引值与 df2 进行比较,并仅保留与 df2 中的时间戳匹配的行。

df1
Date-Time                A    B    C    D
2012-01-11 7:10:05:00    0    1    2    3
2012-01-11 7:14:05:00    0    1    2    3
2012-01-11 7:16:05:00    0    1    2    3
2012-01-11 7:25:05:00    0    1    2    3
2012-01-11 7:31:05:00    0    1    2    3

df2
Date-Time                A    B    C    D
2012-01-11 7:10:05:00    6    8    1.5  6.8
2012-01-11 7:25:05:00    0    11   4    3.3
2012-01-11 7:31:05:00    0    44   2.2  3.3

所以只有第 0、3 和 4 行应该保留在 d1 中

4

4 回答 4

1

确保您的“日期时间”列index在两者中(您可以通过 获取它set_index(),然后选择 1:

1)使用isin

df1_new = df1[df1.index.isin(df2.index)]

2)使用loc

df1_new = df1.loc[df2.index, :]
于 2021-01-11T13:47:55.953 回答
0

这应该这样做 df1.loc[df1.index.isin(df2.index)]

于 2021-01-11T13:50:43.460 回答
0

如果Date-Time是一列,试试这个: df1 = df1[ df1['Date-Time'] == df2['Date-Time'] ]

您也可以通过合并数据框来做到这一点:

df1 = pd.merge(df2['Date-Time'], df1, on='Date-Time', how='left')
于 2021-01-11T13:46:08.587 回答
0

将您的索引更改为列,然后按照以下链接中的说明进行操作,之后您可以将其更改回索引

比较两个不同大小的熊猫数据框

于 2021-01-11T13:44:57.847 回答