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

Python 在熊猫中,[list]和[[list]]有什么区别?,python,pandas,Python,Pandas,如果这个问题已经回答了,我很抱歉,但是我真的不知道它们的不同名称(对象、列表或数组?),所以我仍然感到困惑 作为这个问题的后续,我很好奇 答案是 为什么[[list]]导致错误 只有整数标量数组才能转换为标量索引 但是[list]没有?您在链接问题中提到的相关代码是: df1=pd.DataFrame({'a':[1,2]}) df2=pd.DataFrame({'b':[3,1]}) df1.columns=['b']#错误 df1.columns=['b']#正确 df1.merge(df

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

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

答案是

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

只有整数标量数组才能转换为标量索引


但是
[list]
没有?

您在链接问题中提到的相关代码是:

df1=pd.DataFrame({'a':[1,2]})
df2=pd.DataFrame({'b':[3,1]})
df1.columns=['b']#错误
df1.columns=['b']#正确
df1.merge(df2,on='b')
df.columns
必须是列标签列表1,每个标签表示列的名称。在错误的版本中,您将其设置为一个元素列表,其元素本身就是一个列表(而不是字符串),因此出现了错误



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

['a']
时导致问题
['a']
是一个字符串列表(可能是字符串列表),而
[['a']]]
是一个字符串列表。为什么一个是另一个的有效替代品?如果我索引到该列表中,希望得到一个字符串,而不是一个列表,那么TypeError是最有可能并且最容易调试的结果。非常感谢。我现在才意识到这一点。
df.columns
必须是一个字符串列表,每个字符串代表一个列的名称。不正确…请尝试
df1.columns=[('a',)]
fairpoint,我不太确定是否允许使用其他哈希类型。这本书谈到了“列标签”,但我想这比字符串更广泛。我会修改答案谢谢你的清楚解释!我现在明白了^_^
df1.columns=[['b']]
这不会给出一个错误,它将
[['b']]
转换为
多索引
,此错误与
合并
无关。columns@Ch3steR不会
合并
失败,因为它在引擎盖下使用
['b']
在数据框中尝试索引(是
columns
一个带有setter的属性,该setter执行到多索引的转换,还是我们正在覆盖一个列表并在以后面临后果?我找不到任何有关这方面的信息)?设置
columns
本身并没有引起错误,但它是错误的根源。