【发布时间】:2023-04-08 00:12:02
【问题描述】:
我有两个不同的数据框,df1 和 df2。 df1 由从初始日期到最终日期的完整日期系列索引; df2 从必须在 df1 中的日期索引,但它的索引是 df1 索引的子集。我正在尝试遍历 df1.index 并使用以下代码验证 df1 的特定索引值是否存在于 df2:
from datetime import timedelta
import datetime
import pandas as pd
for idx in df1.index:
if idx in df2.index:
print(df2.loc[idx])
我面临的问题是 df2 的某些索引产生 if 语句,而有些则不是。例如:
sdate = datetime.date(2020, 5, 4)
edate = datetime.date(2020, 10, 1)
some_date = edate - timedelta(days=2)
# df1 with all the dates
df1 = pd.DataFrame(index=pd.date_range(sdate,edate-timedelta(days=1),freq='d'))
# df2 with only two dates (sdate and some_date)
df2 = pd.DataFrame(index=[sdate, some_date])
当我尝试运行以下代码时,它会产生 False
df1.loc[some_date].name in df2.index
>>> False
虽然some_date 显然在 df2.index 中
some_date in df2.index
>>> True
在与 df2.index 的比较中,首先显示df1.loc[some_date].name 的返回不兼容,但在尝试运行以下代码时,会观察到不同的行为:
df1.loc[sdate].name in df2.index
>>> True
sdate in df2.index
>>> True
这到底是如何工作的?
【问题讨论】:
标签: python pandas dataframe indexing