美文网首页
python数据分析 [2]「如何进行轴连接」

python数据分析 [2]「如何进行轴连接」

作者: ed2f9d7534f2 | 来源:发表于2019-12-21 19:37 被阅读0次

"""

import pandas as pd

import numpy as np

arr = np.arange(12).reshape((3,4))

# print(arr)

double_arr = np.concatenate([arr, arr], axis=1)

# print(double_arr)

# 可见,numpy是可以用concatenate函数做连接的,实际上pandas也可以

"""

Series

"""

s1 = pd.Series([0,1],index = ['a','b'])

s2 = pd.Series([2,3,4],index = ['c','d','e'])

s3 = pd.Series([5,6],index = ['f','g'])

"""

默认情况下,concat是在axis=0上工作的,最终产生一个新的Series。如果传入 axis=1,则结果就会变成一个DataFrame(axis=1是列)

"""

concat_value = pd.concat([s1,s2,s3],axis =1)

# print(concat_value)

s4 = pd.concat([s1,s3],axis =0)

"""

这种情况下,另外的轴上没有重叠,从索引的有序并集(外连接)上就可以看出 来,传入join='inner'即可得到它们的交集

"""

s5 = pd.concat([s1,s4],axis =1,join ='inner')

# print(s5)

"""

你可以通过join_axes指定要在其它轴上使用的索引

"""

s6 = pd.concat([s1, s4], axis=1, join_axes=[['a', 'c', 'b', 'e']])

"""

参与连接的片段在结果中区分不开。假设你想要在连接轴上创建一个层次化索引,使用keys参数即可达到这个目的

"""

result = pd.concat([s1, s1, s3], keys=['one','two', 'three'])

# print(result)

# 双层索引,用unstack()可以让目前的外层索引成为行索引,第二层索引是列索引

# print(result.unstack())

"""

如果沿着axis=1对Series进行合并,则keys就会成为DataFrame的列头

"""

result_ = pd.concat([s1, s2, s3], axis=1, keys=['one','two', 'three'])

# print(result_)

df1 = pd.DataFrame(np.arange(6).reshape(3, 2), index=['a', 'b', 'c'],columns=['one', 'two'])

df2 = pd.DataFrame(np.arange(4).reshape(2, 2), index=['a', 'c'],columns=['three', 'four'])

df3 = pd.concat([df1,df2],axis =0,keys = ['one','two'])

df4 = pd.concat([df1,df2],axis =1,keys = ['level1','level2'])

# 也可以用字典在连接数据的时候直接加入列名

pd.concat({'level1': df1, 'level2': df2}, axis=1)

"""

相关文章

网友评论

      本文标题:python数据分析 [2]「如何进行轴连接」

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