Pandas合并赋予nan值



我很确定我知道为什么在合并2个DFs后在DF2中得到nan值,但我不知道如何解决这个问题。我的数据如下所示。DF2 df是一个非常大的df,年份、月份和日期可以追溯到1991年。我试图将这个DF2的一个子集与DF1中2018年的一个小得多的年/月/日子集进行匹配或合并。通常,"nan"值的问题是由于df1、df2中的列名不匹配或相似,但我的列在我看来是一样的。

DF1:

Out[2]: 
plant_name  obsvals  year  month  day  hour
0  COPPER CROSSING      0.0  2018      1    1     2
1  COPPER CROSSING      0.0  2018      1    1     3
2  COPPER CROSSING      0.0  2018      1    1     4
3  COPPER CROSSING      0.0  2018      1    1     5
4  COPPER CROSSING      0.0  2018      1    1     6

我的第二个df是这样的:DF2:

plant_name  business_name maint_region_name  modelvals     dataset  year  month  day  hour
245448  COPPER CROSSING  UNITED STATES           CENTRAL     3839.9  ERA5        2018      1    1     0
245449  COPPER CROSSING  UNITED STATES           CENTRAL        0.0  ERA5        2018      1    1     1
245450  COPPER CROSSING  UNITED STATES           CENTRAL        0.0  ERA5        2018      1    1     2
245451  COPPER CROSSING  UNITED STATES           CENTRAL        0.0  ERA5        2018      1    1     3
245452  COPPER CROSSING  UNITED STATES           CENTRAL        0.0  ERA5        2018      1    1     4

我合并这两个DFs的想法是这样的,但它在"modelvals"列中使用how=";内部";以及如何=";左";。感谢您提出如何合并这两个DF的想法。

DF3 = DF1.merge(DF2, on=["plant_name", "year", "month", "day", "hour"], how="inner")

输出如下:

fdf = DF3[(DF3['year'] == 2018) & (DF3['month'] == 1) & (DF3['day']==1) ]
plant_name  obsvals  year  month  day  hour  business_name maint_region_name  modelvals     dataset
0   COPPER CROSSING      0.0  2018      1    1     2  UNITED STATES           CENTRAL        NaN  ERA5      
1   COPPER CROSSING      0.0  2018      1    1     3  UNITED STATES           CENTRAL        NaN  ERA5      
2   COPPER CROSSING      0.0  2018      1    1     4  UNITED STATES           CENTRAL        NaN  ERA5      
3   COPPER CROSSING      0.0  2018      1    1     5  UNITED STATES           CENTRAL        NaN  ERA5      
4   COPPER CROSSING      0.0  2018      1    1     6  UNITED STATES           CENTRAL        NaN  ERA5      

您可以在"modelvals"列中看到"nan"值。我在下面列出了两个熊猫的数据类型:

DF1:
plant_name     object
obsvals       float64
year            int64
month           int64
day             int64
hour            int64
dtype: object
DF2:
plant_name            object
business_name         object
maint_region_name     object
modelvals            float64
dataset               object
year                   int64
month                  int64
day                    int64
hour                   int64
dtype: object 

我正在合并"plant_name"、"year"、"month"、"day"one_answers"hour",它们看起来具有相同的数据类型。在代码的前一步中,我将在上面显示的合并步骤之前从DF1DF中删除"nan"值。

首先应该使用df.dropna((删除nan值。当您删除nan值时,索引的顺序可能不正确。

因此运行df.rendex(轴=0(

相关内容

  • 没有找到相关文章

最新更新