Tutorial básico de Python: ejemplos de combinación de datos de DataFrame, join (concat, merge, join) en Pandas

@Este artículo proviene del número público: csdn2299, como si pudieras prestar atención a la Academia de programadores de números públicos de
hoy, Xiaobian compartirá un ejemplo de combinación de datos DataFrame, join (concat, merge, join) en Pandas, que tiene un buen valor de referencia Espero ayudar a todos. Echemos un vistazo al editor juntos.
Recientemente, en el trabajo, encontré problemas con la fusión y conexión de datos, por lo que los organizaré de la siguiente manera para referencia de aquellos que lo necesitan ~

1. Concat: apila varios objetos juntos a lo largo de un eje

El método concat es equivalente a una unión en la base de datos. No solo puede especificar el método de conexión (unión externa o unión interna) sino también especificar la conexión de acuerdo con un eje. A diferencia de la base de datos, no deduplicará, pero puede usar el método drop_duplicates para lograr el efecto de la deduplicación.

concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, 
    keys=None, levels=None, names=None, verify_integrity=False, copy=True):

pd.concat () simplemente divide las dos tablas juntas. El eje del parámetro es la clave. Se utiliza para especificar si se trata de una fila o una columna. El eje es 0 por defecto.

Cuando axis = 0, el efecto de pd.concat ([obj1, obj2]) es el mismo que obj1.append (obj2); cuando axis = 1, pd.concat ([obj1, obj2], axis = 1) El efecto es el mismo que pd.merge (obj1, obj2, left_index = True, right_index = True, how = 'external').

Vea a continuación una introducción al método de fusión.

Introducción de parámetros:

objs: colección de objetos que necesitan estar conectados, generalmente listas o diccionarios;

eje: eje de conexión;

unirse: el parámetro es 'externo' o 'interno';

join_axes = []: especifique un índice personalizado;

claves = []: crea un índice jerárquico;

ignore_index = True: reconstruye el índice

Por ejemplo: pd.concat () es simplemente unir las dos tablas juntas. El eje del parámetro es la clave. Se utiliza para especificar si es una fila o una columna. El eje predeterminado es 0.

Cuando axis = 0, el efecto de pd.concat ([obj1, obj2]) es el mismo que obj1.append (obj2); cuando axis = 1, pd.concat ([obj1, obj2], axis = 1) El efecto es el mismo que pd.merge (obj1, obj2, left_index = True, right_index = True, how = 'external').

Vea a continuación una introducción al método de fusión.

Introducción de parámetros:

objs: colección de objetos que necesitan estar conectados, generalmente listas o diccionarios;

eje: eje de conexión;

unirse: el parámetro es 'externo' o 'interno';

join_axes = []: especifique un índice personalizado;

claves = []: crea un índice jerárquico;

ignore_index = True: reconstruye el índice

Ejemplos:

df1=DataFrame(np.random.randn(3,4),columns=['a','b','c','d']) 
  
df2=DataFrame(np.random.randn(2,3),columns=['b','d','a']) 
  
pd.concat([df1,df2]) 
  
     a     b     c     d 
0 -0.848557 -1.163877 -0.306148 -1.163944
1 1.358759 1.159369 -0.532110 2.183934
2 0.532117 0.788350 0.703752 -2.620643
0 -0.316156 -0.707832    NaN -0.416589
1 0.406830 1.345932    NaN -1.874817
  
pd.concat([df1,df2],ignore_index=True) 
  
     a     b     c     d 
0 -0.848557 -1.163877 -0.306148 -1.163944
1 1.358759 1.159369 -0.532110 2.183934
2 0.532117 0.788350 0.703752 -2.620643
3 -0.316156 -0.707832    NaN -0.416589
4 0.406830 1.345932    NaN -1.874817

Segundo, fusionar: empalmar columnas por clave

Similar al método de conexión de bases de datos relacionales, se pueden conectar diferentes DatFrames de acuerdo con una o más claves. El escenario de aplicación típico de esta función es que para una tabla con dos campos diferentes para la misma clave primaria, se integra en una tabla de acuerdo con la clave primaria.

merge(left, right, how='inner', on=None, left_on=None, right_on=None, 
left_index=False, right_index=False, sort=True, 
suffixes=('_x', '_y'), copy=True, indicator=False)

Introducción de parámetros:

izquierda y derecha: dos marcos de datos diferentes;

cómo: método de conexión, interno, izquierdo, derecho, externo, el predeterminado es interno;

on: se refiere al nombre de índice de columna utilizado para la conexión, debe existir en el DataFrame izquierdo y derecho, si no se especifica y no se especifican otros parámetros, la intersección de los dos nombres de columna de DataFrame como clave de conexión;

left_on: el nombre de columna utilizado para conectar las claves en el DataFrame izquierdo. Este parámetro es muy útil cuando los nombres de columna izquierdo y derecho son diferentes pero los significados son los mismos;

right_on: el nombre de columna utilizado para conectar las claves en el DataFrame correcto;

left_index: use el índice de fila en el DataFrame izquierdo como clave de conexión;

right_index: use el índice de fila en el DataFrame derecho como clave de conexión;

ordenar: Verdadero por defecto, ordenar los datos combinados, establecer en Falso para mejorar el rendimiento;

sufijos: tupla compuesta de valores de cadena, utilizada para especificar el nombre del sufijo agregado al nombre de la columna cuando existe el mismo nombre de columna en el Marco de datos izquierdo y derecho, el valor predeterminado es ('_x', '_y');

copia: Verdadero de forma predeterminada, siempre copie los datos en la estructura de datos, establecido en Falso puede mejorar el rendimiento;

indicador: muestra la fuente de los datos en los datos combinados

Ejemplos:

# 1.默认以重叠的列名当做连接键。
df1=DataFrame({'key':['a','b','b'],'data1':range(3)})  
df2=DataFrame({'key':['a','b','c'],'data2':range(3)})  
pd.merge(df1,df2)  #没有指定连接键,默认用重叠列名,没有指定连接方式 
  
  data1 key data2 
0   0  a   0
1   1  b   1
2   2  b   1
  
# 2.默认做inner连接(取key的交集),连接方式还有(left,right,outer),制定连接方式加参数:how=''
pd.merge(df2,df1) 
  
  data2 key data1 
0   0  a   0
1   1  b   1
2   1  b   2          #默认内连接,可以看见c没有连接上。 
  
pd.merge(df2,df1,how='left')  #通过how,指定连接方式 
  
  data2 key data1 
0   0  a   0
1   1  b   1
2   1  b   2
3   2  c  NaN 
  
# 3.多键连接时将连接键组成列表传入,例:pd.merge(df1,df2,on=['key1','key2']
right=DataFrame({'key1':['foo','foo','bar','bar'], 
     'key2':['one','one','one','two'], 
     'lval':[4,5,6,7]}) 
left=DataFrame({'key1':['foo','foo','bar'], 
     'key2':['one','two','one'], 
     'lval':[1,2,3]}) 
right=DataFrame({'key1':['foo','foo','bar','bar'], 
     'key2':['one','one','one','two'], 
     'lval':[4,5,6,7]}) 
pd.merge(left,right,on=['key1','key2'],how='outer') #传出数组 
   
 key1 key2 lval_x lval_y 
0 foo one    1    4
1 foo one    1    5
2 foo two    2   NaN 
3 bar one    3    6
4 bar two   NaN    7
  
# 4.如果两个对象的列名不同,可以分别指定,例:pd.merge(df1,df2,left_on='lkey',right_on='rkey')
df3=DataFrame({'key3':['foo','foo','bar','bar'], #将上面的right的key 改了名字 
     'key4':['one','one','one','two'], 
     'lval':[4,5,6,7]}) 
pd.merge(left,df3,left_on='key1',right_on='key3') #键名不同的连接 
   
 key1 key2 lval_x key3 key4 lval_y 
0 foo one    1 foo one    4
1 foo one    1 foo one    5
2 foo two    2 foo one    4
3 foo two    2 foo one    5
4 bar one    3 bar one    6
5 bar one    3 bar two    7

Tres, unirse: se utiliza principalmente para la fusión de índices

join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False):

El significado de sus parámetros es básicamente el mismo que el del método de fusión.
Muchas gracias por leer
. Cuando decidí estudiar Python en la universidad, descubrí que me comía una mala base informática. No tenía una calificación académica. Esto
no es nada que hacer. Solo puedo compensarlo. El camino, continúe aprendiendo el conocimiento central de Python, el estudio en profundidad de los conceptos básicos de la computadora, resuelto, si no está dispuesto a ser mediocre, ¡únase a mí en la codificación y continúe creciendo!
De hecho, no solo hay tecnología aquí, sino también cosas más allá de esas tecnologías. Por ejemplo, cómo ser un programador exquisito, en lugar de "seda de gallo", el programador en sí es una existencia noble, ¿no? [Haz clic para unirte] ¡ Quieres ser tú mismo, quieres ser una persona noble, vamos!

Publicado 45 artículos originales · elogiado 16 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/chengxun03/article/details/105521957
Recomendado
Clasificación