130、pandas操作——索引上的数据集合并

DataFrame中的连接键位于其索引中,可以传入left_index=True或right_index=True(或两个都传入)来说明索引应该被用作连接键:
1.png

默认的merge方法是求连接键的交集,可以通过外连接的方式得到并集:
2.png

层次化索引:
3.png

以列表的形式指明用作合并键的多个列:
4.png

合并索引:
5.png

DataFrame还有一个join实例方法,它能更方便实现按索引合并:
6.png

使用join支持参数DataFrame的索引跟调用者DataFrame的某个列之间的连接:
7.png

向join传入一组DataFrame实现简单的索引合并:
8.png

源码:

# coding: utf-8

# In[1]:

import numpy as np
from pandas import Series,DataFrame
import pandas as pd


# In[2]:

# 索引被用作连接键
left1 =DataFrame({'key':['a','b','a','a','b','c'],'value':range(6)})
print (left1)


# In[3]:

right1 = DataFrame({'group_val':[3.5,7]},index=['a','b'])
print(right1)


# In[4]:

pd.merge(left1,right1,left_on='key',right_index=True)


# In[5]:

# 通过外连接方式求并集
pd.merge(left1,right1,left_on='key',right_index=True,how='outer')


# In[6]:

# 层次化索引
lefth = DataFrame({'key1':['Ohio','Ohio','Ohio','Nevada','Nevada'],
                   'key2':[2000,2001,2002,2001,2002],
                   'data':np.arange(5)})
print(lefth)


# In[7]:

righth = DataFrame(np.arange(12).reshape((6,2)),
                   index=[['Nevada','Nevada','Ohio','Ohio','Ohio','Ohio'],
                          [2001,2000,2000,2000,2001,2002]],
                   columns=['event1','event2'])
print(righth)


# In[8]:

# 以列表的形式指明用作合并键的多个列
pd.merge(lefth,righth,left_on=['key1','key2'],right_index=True)


# In[9]:

pd.merge(lefth,righth,left_on=['key1','key2'],right_index=True,how='outer')


# In[10]:

# 合并索引
left2 = DataFrame([[1,2],[3,4],[5,6]],index=['a','c','e'],columns=['Ohio','Nevada'])
print(left2)


# In[11]:

right2 = DataFrame([[7,8],[9,10],[11,12],[13,14]],
                    index=['b','c','d','e'],columns=['Missour','Alabama'])
print(right2)


# In[12]:

pd.merge(left2,right2,how='outer',left_index=True,right_index=True)


# In[13]:

# 使用join实例方法按索引合并
left2.join(right2,how='outer')


# In[14]:

# join支持参数DataFrame的索引跟调用者DataFrame的某个列之间的连接
left1.join(right1,on='key')


# In[15]:

# 向join传入一组DataFrame实现简单的索引合并
another = DataFrame([[7,8],[9,10],[11,12],[16,17]],
                    index=['a','c','e','f'],columns=['New York','Oregon'])

left2.join([right2,another])


# In[16]:

left2.join([right2,another],how='outer')

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数据集的合并(merge)或连接(join)运算是通过一个或多个键将行链接起来。 上面操作的结果里,lkey中的’...
    陈容喜阅读 3,674评论 2 4
  • 你明媚如春 在我的疆土里 是唯一的气候 你远去成酒 我所有的血液 沾染上一口烈 你隐藏成夜 安静的偷看着 我梦见你...
    西城的北阅读 2,563评论 0 0
  • 这时刻,我们不曾想过名与利, 唯有一种动力, 大家都想帮一把, 这些大凉山彝族孩子。 孩子们的歌声打动着我, 他们...
    3fd25a0a9f73阅读 2,817评论 0 3
  • 伴画的是林保怡主演的电视剧《玛嘉烈与大卫:绿豆》。看了两集,暂时还不知道关绿豆咩事,难道是因为每集都是讲玛嘉烈和大...
    花开兮缓归阅读 4,996评论 2 4
  • 一天不听歌就不舒服,重度听歌爱好者。以此为第一篇,把我所喜欢的歌曲分门别类的带上我的感触记录下来,也分享给大家。 ...
    小袅手账阅读 5,568评论 4 9

友情链接更多精彩内容