Python 如何在两个不同的列df';s

Python 如何在两个不同的列df';s,python,pandas,duplicates,Python,Pandas,Duplicates,我有两个具有不同len的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

我有两个具有不同len的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)]

但我没有得到共同的价值观。我希望你能给我一个答案或一些建议。谢谢

经过编辑,使答案更符合您的情况

您可以使用默认情况下进行内部联接的。如果您坚持要使用一个数据帧来严格使用单个列的公共值,请尝试以下方法:

df3=pd.merge(df1, df2, left_on=['ESTACION'], right_on=['Estacion'])
df3.drop(df3.columns.difference(['ESTACION']), 1, inplace=True)

如果希望获得公共值,而不管它们出现在何处以及出现多少次,您只需执行以下操作:

common_values = list(set(np.unique(df1['ESTACION'].values)).intersection(set(np.unique(df2['Estacion'].values))))
当然,您需要以前运行过
importnumpyasnp

这将为您提供在两列中找到的所有值的列表。然后,您可以将它们分配给一个新数据帧的列,如下所示
df3['common_values']=common_values
或使用这些值执行任何其他操作。

我认为您希望合并数据帧,如下所示:

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

如评论中所述,
ESTACION
列与
ESTACION

不相同。当您进行分析时,
ESTACION
ESTACION
不相同,因此创建了两个不同的列。您可能想重命名任一列,并在
duplicated
中仅使用一列作为子集。您的问题并不完全清楚,能否显示预期的输出?