美文网首页我爱编程
130、pandas操作——索引上的数据集合并

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

作者: 陈容喜 | 来源:发表于2018-01-23 17:09 被阅读0次
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')

相关文章

网友评论

    本文标题:130、pandas操作——索引上的数据集合并

    本文链接:https://www.haomeiwen.com/subject/gkasaxtx.html