Как получить df с общими значениями в 2 разных столбцах df? - PullRequest
0 голосов
/ 29 апреля 2020

У меня 2 dfs с разными длинами:

   df1: 

        ESTACION    DZ
   0    ALAMOR      1
   1    EL TIGRE    1
   2    SAN PEDRO   1
   3    TABACONAS   1
   4    BATAN       2
   5    CACAO       2
   6    CHOTANO     2
   7    CIRATO      2
   8    LLAUCANO    2
   9    NARANJOS    2
   10   MAGUNCHAL   2
   11   PUCHACA     2
   12   MAYGASBAMBA 2

   df2:
        Estacion        Co  Dre
  56    ALAMOR          C   1
  89    LAGARTERA       C   1
  90    PUENTE PIURA    C   1
 211    PUENTE SULLANA  C   1
 249    PALTASHACO      C   1
 250    TAMBO GRANDE    C   1
 342    VENTANILLAS     C   2
 421    CACAO           C   2
 466    DESAGUADERO     C   2
 508    QUEBRADA HONDA  C   2

Я хочу сохранить в другом df (df3) общие значения между df1 ['ESTACION'] и df2 ['Estacion'], поэтому я попробовал это код:

duplicates = pd.concat([df1,df2])[pd.concat([df1,df2])
                             .duplicated(subset=['ESTACION','Estacion'], keep=False)]

Но я не получаю общих ценностей. Я надеюсь, что вы можете дать мне ответ или несколько советов. Спасибо!!

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

Отредактировано, чтобы сделать ответ более конкретным c для вашей ситуации

Вы можете использовать merge, который по умолчанию выполняет внутреннее соединение. И если вы настаиваете на наличии кадра данных со строго общими значениями одного столбца, попробуйте это:

df3=pd.merge(df1, df2, left_on=['ESTACION'], right_on=['Estacion'])
df3.drop(df3.columns.difference(['ESTACION']), 1, inplace=True)
0 голосов
/ 29 апреля 2020

Я думаю, что вы хотите объединить кадры данных, например:

df3 = pd.merge(df1,df2, left_on=['ESTACION'],right_on=['Estacion'])

, как указано в комментариях, столбец ESTACION отличается от Estacion

0 голосов
/ 29 апреля 2020

Если вы хотите получить общие значения независимо от того, где они появляются и сколько раз, вы можете просто сделать это:

common_values = list(set(np.unique(df1['ESTACION'].values)).intersection(set(np.unique(df2['Estacion'].values))))

Вы должны были запустить ранее import numpy as np конечно.

Это даст вам список всех значений, которые находятся в обоих столбцах. Затем вы можете назначить их новому столбцу DataFrame, например, df3['common_values'] = common_values или сделать с этими значениями все, что вы хотите.

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