Python 设置索引的方式有什么不同

Python 设置索引的方式有什么不同,python,pandas,dataframe,Python,Pandas,Dataframe,设置数据帧索引的方式有什么不同 data = [['A', 5], ['B', 6], ['C', 7]] df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key']) 我发现以下错误: Shape of passed values is (2, 3), indices imply (2, 1) 如果我按以下方式操作,则工作正常: df2 = pd.DataFrame(data=data, columns=['

设置数据帧索引的方式有什么不同

data = [['A', 5], ['B', 6], ['C', 7]]
df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key'])
我发现以下错误:

Shape of passed values is (2, 3), indices imply (2, 1)
如果我按以下方式操作,则工作正常:

df2 = pd.DataFrame(data=data, columns=['key', 'amount'])
df2.set_index(['key'], inplace=True)
我设置索引的方式有什么不同?

第一种方式:

data = [['A', 5], ['B', 6], ['C', 7]]
df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key'])
您将索引指定为
'key'
的单个值。换句话说,将有一行的标签是
“key”

第二种方式:

df2 = pd.DataFrame(data=data, columns=['key', 'amount'])
df2.set_index(['key'], inplace=True)
您指定了一个名为
'key'
的列,该列可能包含许多行。随后,您指示
df2
使其索引等于名为
'key'

的整个列。一方面,预期索引为数组,并将用作行的索引,例如:

In [17]: data
Out[17]: [['A', 5], ['B', 6], ['C', 7]]

In [18]: df = pd.DataFrame(data=data, index=['a', 'b', 'c'])

In [19]: df
Out[19]: 
   0  1
a  A  5
b  B  6
c  C  7
这不是你想要达到的


另一方面,将一个(或多个)列设置为成为索引,这是您在本例中要执行的操作。

您不能为索引指定列,它需要一个与最终df长度相同的索引对象或数组,因此您必须在构建后执行此操作