Pandas pd.concat和#x27;s';名称';vs';钥匙';关键词
我想连接两个未命名的Pandas pd.concat和#x27;s';名称';vs';钥匙';关键词,pandas,Pandas,我想连接两个未命名的系列(它们未命名,因为我正在动态创建它们。) 我的第一次尝试如下: 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 我很惊讶这不起作用,并阅读了文档: 名称:列表,默认为无 结果层次索引中级别的名称 这本身对我来说意义不大 我尝试了不那么直观的
系列
(它们未命名,因为我正在动态创建它们。)
我的第一次尝试如下:
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
我很惊讶这不起作用,并阅读了文档:
名称:列表,默认为无
结果层次索引中级别的名称
这本身对我来说意义不大
我尝试了不那么直观的键
关键字,这实现了我认为名称
可以做到的:
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
指定的?names
-用names选项标记您创建的索引键。这为分层索引或多索引级别命名。如果级别不止一个,则将实现名称,否则将忽略它们
Keys
-使用Keys选项在数据的最外层添加层次索引。当您传递一个序列时,索引将在键的帮助下设置。(很像设置索引
)。连接后,它们将转换为数据帧,因此在您的案例中,系列索引将设置为列名
当您在不使用axis=1的情况下通过这两项时,您可以看到标记继承人索引和添加继承人索引的含义
pd.concat([pd.Series([1,2,3]), pd.Series([4,5,6])], keys=['foo', 'bar'], names=['Nice', 'TOO'])
也很好
foo 0 1
1 2
2 3
巴0 4
1 5
2 6
数据类型:int64
正如您所看到的,级别是按名称参数命名的,其中As index是按keys参数设置的 我可能不知道您的问题的具体答案,但我知道的是,在动态创建时,您可以指定名称,然后按照预期工作
pd.concat([pd.Series([1,2,3],name='foo'),pd.Series([4,5,6],name='bar')],axis=1)
@Uvar非常有用。是的,这确实消除了我问这个问题的必要性!(尽管正如您所说,它没有回答!)如果串联导致生成层次索引,那么轴将被指定这些名称。否则,它将被忽略。它们在语义上是不同的,因为名称标记层次索引名称,而键标记索引标签值。这里没有层次索引docstrings给出了结果的示例,但可能参数名称或描述应该更清楚,因为一个命名索引级别,另一个命名每个级别的索引标签并不明显
Nice TOO
foo 0 1
1 2
2 3
bar 0 4
1 5
2 6
dtype: int64