您的位置:首页 > 其它

Pandas数据合并merge

2018-03-06 20:53 966 查看
# coding: utf-8

import pandas as pd
import numpy as np

df_obj1 = pd.DataFrame(
{
'key':['a','b','a','c','b','a','a'],
'data1':np.random.randint(0,10,7)
}
)
print df_obj1
df_obj2 = pd.DataFrame(
{
'key':['b','a','d'],
'data2':np.random.randint(0,10,3)
}
)
print df_obj2

# # merge()函数,根据多个键或者单个键将不同的DataFrame的行进行链接
# * 可以将链接的操作对比数据的链接操作
# * 该函数默认将两个对象中的列名重复的列作为“外键”进行链接
# * 默认的链接是“内连接”(inner),而内连接就是结果中的键的交集

pd.merge(df_obj1,df_obj2)

# left_on ,right_on:用来指定左侧对象和右侧对象的外键,这是外键的一个列的名称
# 修改两个对象中的key这个列名

df_obj1 = df_obj1.rename(columns={'key':'key1'})
df_obj2 = df_obj2.rename(columns={'key':'key2'})
print df_obj1
print df_obj2

pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2')

# * 修改默认链接方式
# * 外链接(outer):结果中的键是并集

# how:指定链接方式
pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2',how='outer')

pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2',how='left')

pd.merge(df_obj1,df_obj2,left_on='key1',right_on='key2',how='right')

df_obj1 = pd.DataFrame(
{
'key':['a','b','a','c','b','a','a'],
'data':np.random.randint(0,10,7)
}
)
print df_obj1
df_obj2 = pd.DataFrame(
{
'key':['b','a','d'],
'data':np.random.randint(0,10,3)
}
)
print df_obj2

# 处理重复列名(不包括key)
pd.merge(df_obj1,df_obj2,on ='key',suffixes=('_left','_right'))

# * 链接
# * right_on 和 left_index
# * lift_on 和 right_index

df1 = pd.DataFrame(
{    'key':['a','a','c','b'],
'data1':np.random.randint(0,10,4)
}
)
df2 = pd.DataFrame(
{
'data2':np.random.randint(0,10,3)
},
index=['a','b','d']
)
pd.merge(df1,df2,left_on='key',right_index=True)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: