假设我有多个数据框:
print (df1)
datetime A
0 2012-08-14 07:00 1
1 2012-08-14 07:01 2
2 2012-08-14 08:15 3
... ...
192908 2013-08-14 16:00 600
192948 2013-08-14 16:15 700
192949 2013-08-14 16:57 900
print (df2)
datetime B
0 2012-08-14 07:00 100
1 2012-08-14 07:15 200
2 2012-08-14 07:30 300
... ...
12140 2013-09-24 15:45 50
12141 2013-09-24 16:00 60
12142 2013-09-24 16:15 70
如何创建一个新的 df 只包含列中有值的行A
并且B
在同一日期时间?我尝试使用该isin
功能:
df1 = df1[df1['date'].isin(df2['date'])]
但这仅进行单向检查,即仅保留同时A
存在 的值的值,但如果日期时间中不存在的额外值则保留在 df2 中。B
datetime
B
A
我可以在相反的方向重复操作来解决这个问题:
df2 = df2[df2['date'].isin(df1['date'])]
但是对于 >2 个数据帧(我目前的工作中大约有 50 个),这变得非常冗长且效率低下,因为有必要遍历整个数据帧集之间的每一个可能的配对组合。例如,首先需要对照 df1 和 df2 检查第三个数据帧 df3,但如果它包含既不存在于 df1 也不存在于 df2 中的日期时间,那么 df1 和 df2 将依次需要对照 df3 重新检查。
所需的输出是重新定义所有数据帧,以便它们仅包含具有匹配日期时间值的A
、等值。B