源码

首页 » 归档 » 源码 » python – Pandas的concat函数中的’levels’,’…

python – Pandas的concat函数中的’levels’,’…


问题

>我如何使用pd.concat?
>级别参数是什么?
>关键参数是什么?
>是否有大量示例可帮助解释如何使用所有参数?

Pandas的concat函数是合并工具的Swiss Army knife.它有用的各种情况很多.现有文档遗漏了一些可选参数的一些细节.其中包括关卡和关键字参数.我开始弄清楚这些论点的作用.

我将提出一个问题,它将成为pd.concat许多方面的门户.

考虑数据帧d1,d2和d3:

import pandas as pd

d1 = pd.DataFrame(dict(A=.1, B=.2, C=.3), [2, 3])
d2 = pd.DataFrame(dict(B=.4, C=.5, D=.6), [1, 2])
d3 = pd.DataFrame(dict(A=.7, B=.8, D=.9), [1, 3])

如果我将这些连接在一起

pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'])

我用我的columns对象的pandas.MultiIndex获得了预期的结果:

        A    B    C    D
d1 2  0.1  0.2  0.3  NaN
   3  0.1  0.2  0.3  NaN
d2 1  NaN  0.4  0.5  0.6
   2  NaN  0.4  0.5  0.6
d3 1  0.7  0.8  NaN  0.9
   3  0.7  0.8  NaN  0.9

但是,我想使用levels argmument documentation

levels: list of sequences, default None.
Specific levels (unique values) to use for constructing a MultiIndex. Otherwise they will be inferred from the keys.

所以我通过了

pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'], levels=[['d1', 'd2']])

并得到一个KeyError

ValueError: Key d3 not in level Index(['d1', 'd2'], dtype='object')

这是有道理的.我通过的级别不足以描述键所指示的必要级别.如果我没有通过任何东西,就像我上面所做的那样,推断出水平(如文档中所述).但是我怎么能用这个论点来更好地发挥作用呢?

如果我试过这个:

pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'], levels=[['d1', 'd2', 'd3']])

我得到了与上面相同的结果.但是当我再添加一个值时,

df = pd.concat([d1, d2, d3], keys=['d1', 'd2', 'd3'], levels=[['d1', 'd2', 'd3', 'd4']])

我最终得到了相同的数据帧,但结果MultiIndex有一个未使用的级别.

df.index.levels[0]

Index(['d1', 'd2', 'd3', 'd4'], dtype='object')

那么level参数的重点是什么?我应该以不同的方式使用键吗?

我使用的是Python 3.6和Pandas 0.22.

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/python-pandasdeconcathanshuzhongdelevels.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9 月 20, 2019 at 12:32 上午

热评文章