将panda中的日期时间列与另一个日期时间列和返回索引匹配



我有两个数据帧-df1和df2。它们都包含一个datetime列,比如date1和date2。我想将date1列的每个值与date2相匹配,并将索引存储在一个新列中。我正在尝试以下代码:

df1['location'] = df2.loc[df1['date1'] == df2['date2']]

但是这行抛出以下错误:

只能比较标记相同的系列对象。

我还尝试使用如下索引函数:

df1['location'] = df2.index(df1['date1'] == df2['date2'])

这也引发了与上一个代码相同的错误。

如何从df2 DataFrame中获取与df1 DataFrame中的日期匹配的日期索引?我需要对df1中的每个值执行此操作。

for i, row in df2.iterrows():
df1.loc[df1['date1'] == df2.at[i, 'date2'], 'location'] = i

尝试设置MRE:

df1 = pd.DataFrame({'date1': pd.date_range('2022-1-1', periods=5, freq='D')})
df2 = pd.DataFrame({'date2': pd.date_range('2022-1-3', periods=4, freq='D')})
# df1
#        date1
# 0 2022-01-01
# 1 2022-01-02
# 2 2022-01-03
# 3 2022-01-04
# 4 2022-01-05
# df2
#        date2
# 0 2022-01-03
# 1 2022-01-04
# 2 2022-01-05
# 3 2022-01-06

df2的当前索引与date2列交换,并将序列映射到df1:的date1

df1['location'] = df1['date1'].map(df2.reset_index().set_index('date2')['index'])
print(df1)
# Output
date1  location
0 2022-01-01       NaN
1 2022-01-02       NaN
2 2022-01-03       0.0
3 2022-01-04       1.0
4 2022-01-05       2.0

最新更新