Объединение / слияние не работает в Python - PullRequest
0 голосов
/ 25 апреля 2018

Попытка присоединиться к df61 и df_petsy_gz на pic_code. Я включил типы данных для переменных также. Мой код выводит группу NaN, указывающую, что ни один из pic_codes не совпадает между двумя наборами данных. Есть пара миллионов строк данных, поэтому я уверен, что есть несколько совпадений. Я думаю, что делаю что-то не так.

df61.head(3)

 mpe_wgt                        pic_code
      10  420336479305589843900801597032
      10  420907139300189843900792911982
      10  420967449300189843900797682603

mpe_wgt     object
pic_code    object


df_petsy_gz.head(3)

monthly_fiscal_year  month                        pic_code class_of_mail  
               2017     11  420606019300189843900566128707            FC   
               2017     11  420731629300189843900584700299            FC   
               2017     11  420405029300189843900568579224            FC   

   weight  calc_postage  calc_total_postage  MikeZone  
   0.8750          4.02                4.02         5  
   0.3750          2.77                2.77         6  
   0.6875          3.60                3.60         8 

 monthly_fiscal_year      int64
 month                    int64
 pic_code                object
 class_of_mail           object
 weight                 float64
 calc_postage           float64
 calc_total_postage     float64
 MikeZone                 int64

 df61_mpe=pd.merge(df_petsy_gz,df61,on='pic_code', how='outer')

выход

monthly_fiscal_year  month                        pic_code class_of_mail  \
             2017.0   11.0  420606019300189843900566128707            FC   
             2017.0   11.0  420731629300189843900584700299            FC   
             2017.0   11.0  420405029300189843900568579224            FC   
             2017.0   11.0  420301349300189843900567382542            FC   

   weight  calc_postage  calc_total_postage  MikeZone mpe_wgt  
   0.8750          4.02                4.02       5.0     NaN  
   0.3750          2.77                2.77       6.0     NaN  
   0.6875          3.60                3.60       8.0     NaN  
   0.5000          2.77                2.77       4.0     NaN  

1 Ответ

0 голосов
/ 25 апреля 2018

Я не знаю, как выглядят ваши данные, но все, что я знаю, это то, что тип объединения влияет на то, как будут формироваться строки после объединения.

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html

how : {‘left’, ‘right’, ‘outer’, ‘inner’}, default: ‘left’

How to handle the operation of the two objects.

left: use calling frame’s index (or column if on is specified)
right: use other frame’s index
outer: form union of calling frame’s index (or column if on is specified) with other frame’s index, and sort it lexicographically
inner: form intersection of calling frame’s index (or column if on is specified) with other frame’s index, preserving the order of the calling’s one

Попробуйте использовать 'inner' join и посмотрите, если это то, что вам нужно.
Это вернет только те строки, где pic_code найден в обоих фреймах данных и имеет mpe_wgt .

Кроме того, убедитесь, что у pic_code нет конечных / ведущих пробелов, чтобы схожий pic_code из двух кадров данных совпадал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...