Python 如何在两个不同的列df';s
我有两个具有不同len的dfs: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
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
中仅使用一列作为子集。您的问题并不完全清楚,能否显示预期的输出?