啊,大海啊,全是水
pandas啊,全是坑
没错,今天继续学习难的 其实从这篇开始,每一篇都是难得...... 你必须要努力看了文末有彩蛋
分层/多级索引
我们先创建一个分层索引,看看效果
这个创建,办法有好几个
看一下吧
通过from_tuples
创建
import pandas as pdimport randomarrays = [['bar','bar','baz','baz','foo','foo'],['one','two','one','two','one','two']]tuples = list(zip(*arrays))print(tuples)index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])print(index)s = pd.Series([3,1,4,1,5,9],index=index)print(s)
通过调用pd.MultiIndex.from_tuples
我们可以传入一个元组列表搞定
也可以采用两个迭代中的每个元素配对
使用MultiIndex.from_product
iterables = [['bar','baz','foo'],['one','two']]index = pd.MultiIndex.from_product(iterables,names=['first','second'])print(index)
效果是一样的哦
在来一个比较方便的,生成一个多层索引
直接将列表传递到Series或者DataFrame中去看看
arrays = [['bar','bar','baz','baz','foo','foo'], ['one','two','one','two','one','two']]s = pd.Series([3,1,4,1,5,9],index=arrays)print(s)
看好这个一一对应的关系就好了
用到dataframe上,也是一样的哦 没啥区别最新的0.24版本的pandas里面
看,写就写最新的增加了一个方法
MultiIndex.from_frame
MultiIndex.from_frame(df, sortorder=None, names=None)
使用起来,比较清晰
df = pd.DataFrame([['A','nice'],['A','to'], ['B','good'],['B','ye']], columns=['first','second'])print(df)index = pd.MultiIndex.from_frame(df)print(index)
注意啊,这个是0.24版本以上的pandas可以用
小注意
所有的MultiIndex构造函数都接收一个names参数,该参数存储index自己的名称,如果没有传递,默认值为None
索引可以设置在pandas对象的任意轴上
这种情况,直接抛栗子就好了
data = [[1,2,4,5,6,7],[1,2,3,4,5,6]]arrays = [['bar','bar','baz','baz','foo','foo'], ['one','two','one','two','one','two']]tuples = list(zip(*arrays))index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])df = pd.DataFrame(data,index=['A','B'],columns=index)print(df)
查阅结果,看到columns 列名,已经被修改成多级的
如果你要继续尝试,别着急,新的代码来了data = [[1,2,4,5],[1,2,3,4]]arrays = [['bar','bar','baz','baz','foo','foo'], ['one','two','one','two','one','two']]tuples = list(zip(*arrays))index = pd.MultiIndex.from_tuples(tuples,names=['first','second'])df = pd.DataFrame(data,index=['A','B'],columns=index[:4])print(df)
直接使用index切片,选择索引的数量
好了,多层索引先写到这里啦
明天继续,彩蛋时间
欢迎关注公众号哦
今天必须要黑一个网站了
这个网站叫做博x园
发文章的逻辑是这样的
发布的时候
用户可以自己选择是否上传首页
看好,自己选择然后,管理员在把“不好”的删掉
用什么定义不好呢?这要看“权限狗们”如何看待了
重点来了,画重点
它不但删你的文章,还封禁你推送的功能
一句话,你随便发,我随便封
rubbish
以后如果测试压力代码,全部往垃圾园扔
个人牢骚,不接受反驳