Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas pd.concat和#x27;s';名称';vs';钥匙';关键词_Pandas - Fatal编程技术网

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