我希望连接两个未命名的Series
(他们未命名,因为我正在动态创建它们。)
我对此的第一次尝试如下:
In [41]: pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])],
: names=['foo', 'bar'], axis=1)
Out[41]:
0 1
0 1 4
1 2 5
2 3 6
我很惊讶这没有工作并阅读文档:
名称:列表,默认无
生成的分层索引中的级别名称
这对我来说并不是很重要。
我尝试了不太直观的keys
关键字,这就是我认为names
会做的事情:
In [46]: pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])],
: keys=['foo', 'bar'], axis=1)
Out[46]:
foo bar
0 1 4
1 2 5
2 3 6
这里发生了什么?为什么我的列名由名为keys
的关键字指定,而不是由关键字names
指定?
答案 0 :(得分:1)
Names
- 使用names选项标记您创建的索引键。这为Hierarchical indexing或MultiIndex级别指定了名称。如果级别超过1,则实现名称,否则将忽略它们。
Keys
- 使用keys选项在数据的最外层添加分层索引。传递一个系列时,将使用键设置索引。 (很像set index
)。连接后,它们将转换为Dataframe,因此系列索引将在您的情况下设置为列名。
当您在不使用axis =1
的情况下传递两者时,您可以看到标签的heirachial索引和添加heirarhial索引的平均值。
pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])], keys=['foo', 'bar'], names=['Nice', 'TOO'])
Nice TOO foo 0 1 1 2 2 3 bar 0 4 1 5 2 6 dtype: int64
正如您所看到的,level由names参数命名,其中index由keys参数设置。