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