pandas数据清理和计算
1. dataframe.merge:根据一个或多个键将不同dataframe的列连接起来
语法:DataFrame.merge(left,right, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’), copy=True, indicator=False, validate=None)
参数说明:
left与right:需要合并的两个DataFrame
how:指的是合并(连接)的方式,有inner(内连接,即只保留键的交集),left(以左边键为基准,如果右边的键在左边能找到,则保留,否则不保留),right(右外连接),outer(保留键的并集);默认为inner
on : 指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定,则以两个DataFrame的列名交集做为连接键
left_on:键名/键名列表,指明左侧DataFrame中需要连接的是哪些列
right_on:键名/键名列表,指明右侧DataFrame中需要连接的是哪些列
left_index:布尔值,指明是否使用左侧DataFrame键名做新键名
right_index:布尔值,指明是否使用右侧DataFrame键名做新键名
sort:默认为True,将合并的数据进行排序。在大多数情况下设置为False可以提高性能
suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(’_x’,’_y’)
#实例
import pandas as pd
import numpy as np
from pandas import DataFrame
left_df=DataFrame(np.random.randint(0,20,20).reshape(5,4),index=list('abcde'),columns=list('pqxy'))
right_df=DataFrame(np.random.randint(0,20,20).reshape(5,4),index=list('cdefg'),columns=list('qxyz'))
merged=pd.merge(left_df,right_df,on='x',how='outer')
merged2=pd.merge(left_df,right_df,on='x',how='left')
merged3=pd.merge(left_df,right_df,left_on='p',right_on='z',how='left')
print(left_df)
print(right_df)
print('merged_outer',merged)
print('merged_outer',merged2)
print('merged_inner',merged3)
#输出:
p q x y
a 11 9 17 0
b 15 16 5 7
c 6 15 17 8
d 13 17 11 1