我有两只长度不等的熊猫,我试图根据它们匹配的时间、月份、年份和plant_name来组合它们。我不确定merge/concat/join是最有效的还是使用了更少的内存,因为我的实际数据集非常大,而且我得到了意想不到的结果,如下面所示。例如,对于dataframe 1(Df1),我的数据如下所示:
plant_name business_name maint_region_name wind_speed_ms dataset year month day hour
0 CAETITE I BRAZIL BRAZIL 7.88 ERA5 2021 5 31 21
1 CAETITE I BRAZIL BRAZIL 7.95 ERA5 2021 5 31 20
2 RIO DO FOGO BRAZIL BRAZIL 7.72 ERA5 2021 1 31 19
3 RIO DO FOGO BRAZIL BRAZIL 7.68 ERA5 2021 1 31 18
4 CAETITE I BRAZIL BRAZIL 7.41 ERA5 2021 1 31 17
5 CAETITE I BRAZIL BRAZIL 7.32 ERA5 2021 1 31 16并且,dataframe 2或df2:
plant_name vel year month day hour
0 CAETITE I NaN 2021 1 31 19
1 CAETITE I NaN 2021 1 31 18
2 CAETITE I 5.42 2021 1 31 17
3 CAETITE I NaN 2021 1 31 16最后的df或df_combined应该如下所示:
plant_name business_name maint_region_name wind_speed_ms dataset year month day hour vel
0 CAETITE I BRAZIL BRAZIL 7.41 ERA5 2021 1 31 17 5.42
1 CAETITE I BRAZIL BRAZIL 7.32 ERA5 2021 1 31 16 NaN我在下面尝试过许多类似的事情,但是每次尝试都会导致"df3“在实际数据中有相当多的行和列,比我预期的要多,所以我肯定做错了下面的方法:
df3 = df2.merge(df1[["plant_name","year","month","day","hour","wind_speed_ms"]], on=["plant_name"], how="left")谢谢您抽时间见我。
发布于 2021-06-11 12:15:45
你要找的是一个内部连接。此外,还需要将年份、月份、日期和小时添加到连接键中。以下是正确的答案:
df1.merge(df2, on=["plant_name", "year", "month", "day", "hour"], how="inner")https://stackoverflow.com/questions/67936532
复制相似问题