很抱歉,如果这个问题已经回答,但是我真的不知道这两个名称的不同(对象,列表还是数组?),所以我仍然感到困惑。
作为这个问题的后续,我很好奇。
还有Ilyas的答案。
为什么[[list]]
导致错误
仅整数标量数组可以转换为标量索引
但是[list]
不是吗?
答案 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
时引起问题。