在熊猫中,[list]和[[list]]有什么区别?

时间:2020-07-21 13:09:57

标签: python pandas

很抱歉,如果这个问题已经回答,但是我真的不知道这两个名称的不同(对象,列表还是数组?),所以我仍然感到困惑。

作为这个问题的后续,我很好奇。

Pandas: Getting "TypeError: only integer scalar arrays can be converted to a scalar index" while trying to merge data frames

还有Ilyas的答案。

为什么[[list]]导致错误

仅整数标量数组可以转换为标量索引

但是[list]不是吗?

1 个答案:

答案 0 :(得分:2)

您在链接的问题中讨论的相关代码是:

df1 = pd.DataFrame({'a': [1, 2]})
df2 = pd.DataFrame({'b': [3, 1]})

df1.columns = [['b']] # WRONG
df1.columns = ['b']   # CORRECT

df1.merge(df2, on='b')

df.columns必须是列标签 1 的列表,每个标签代表一列的名称。在错误的版本中,您将其设置为一个单元素列表,其元素本身就是一个列表(不是字符串),因此会出错。


1个列标签直接来自documentation of DataFrame.columns,字符串是一种有效值(尽管不是唯一的一种,请参见下面的注释)。另一方面,列表会生成一个MultiIndex(在“错误”版本之后尝试print (df1.columns)),这会在稍后调用merge时引起问题。