这篇博客是紧跟着上一篇的,所以模块,对象都是一样的。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
concat合并
如果要合并的两组数据之间没有连接键,就不能用merge()方法了。但是,可以使用concat()方法。
新建三个Series数据集。
s1 = Series([1,2], index=['a', 'b'])
s2 = Series([3,4], index=['c', 'd'])
s3 = Series([5,6], index=['e', 'f'])
然后,使用列表的方式传入三个数据集。
通过设置axis参数可以变成一个DataFrame。
注意:concat()只有内连接和外连接。
同时,还可以通过设置join_axes参数指定索引的顺序。
由于连接后的结果是不可分割的,所以我们可以通过keys参数创建层次索引。
如果是按列索引,那么keys参数就会变成DataFrame的列索引。
PS:提示信息不用管,就是说以后的版本怎么样了而已。
同时,concat()方法也可以应用在DataFrame数据结构中,下面我给我出代码,读者可以自行测试。
df1 = DataFrame([0, 1, 2],index=['a', 'b', 'c'], columns=['val1'])
df2 = DataFrame([3, 4],index=['a', 'b'], columns=['val2'])
pd.concat([df1, df2], axis=1, keys=['one', 'two'])
同时,除了传入列表,还可以出入字典。
pd.concat({'one':df1, 'two':df2}, axis=1)
注意,当行索引类似时,通过默认的连接会出现重复行索引,所以要设置ignore_index参数。
新建数据的代码:
df1 = DataFrame(np.random.randn(3,4), columns=['a', 'b', 'c', 'd'])
df2 = DataFrame(np.random.randn(2,2), columns=['d', 'c'])
下面是直接连接的图。
所以,在行索引出现了一点小问题。下面是正确的方案。
PS:提示信息不用管,就是说已给不给我排序了。
combine_first合并
上面两种合并,并没有出现两个DataFrame数据集的索引相同的情况,如果出现,只能使用combine_first()函数进行合并了。
新建两个DataFrame数据集。
然后,使用combine_first()方法。