熊猫中两个不同数据框之间的布尔索引

时间:2020-05-21 21:10:43

标签: python python-3.x pandas dataframe

因此,我有两个不同长度的不同数据帧,其中一个公共列为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 中。

1 个答案:

答案 0 :(得分:1)

尝试使用pandas isin生成新列,然后使用所需名称添加它-请参见https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html

    df2['match'] = df2['date'].isin(df1['date'])