因此,我有两个不同长度的不同数据帧,其中一个公共列为Text
,并且我想对它进行布尔索引,以使其与date
上的日期匹配到df2
上的日期。相同的行。第一个数据帧df1
具有每日日期,而df1
具有日期之间的间隔。
DF1:
df2
DF2:
date usd_am usd_pm usd_avg
13235 2020-05-14 1716.40 1731.60 1724.000
13236 2020-05-15 1734.85 1735.35 1735.100
13237 2020-05-18 1756.90 1734.70 1745.800
13238 2020-05-19 1735.25 1737.95 1736.600
13239 2020-05-20 1750.05 1748.30 1749.175
(13240, 4)
两个日期列的格式都统一,并存储为字符串。
我尝试了这个:
day date time
1863 Thursday 2050-09-01 10:30:54 am
1864 Friday 2050-09-30 06:31:48 pm
1865 Sunday 2050-10-30 04:16:00 am
1866 Monday 2050-11-28 04:09:48 pm
1867 Wednesday 2050-12-28 06:15:36 am
(1868, 3)
但是我得到了这个错误:
df1['match'] = df1[df1['date'] == df2['date']]
预期输出应为:
DF1:
ValueError: Can only compare identically-labeled Series objects
如果匹配值为True,则日期也存在于 date usd_am usd_pm usd_avg match
13235 2020-05-14 1716.40 1731.60 1724.000 False
13236 2020-05-15 1734.85 1735.35 1735.100 True
13237 2020-05-18 1756.90 1734.70 1745.800 True
13238 2020-05-19 1735.25 1737.95 1736.600 True
13239 2020-05-20 1750.05 1748.30 1749.175 False
中。
答案 0 :(得分:1)
尝试使用pandas isin生成新列,然后使用所需名称添加它-请参见https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html
df2['match'] = df2['date'].isin(df1['date'])