如何在pandas中将第一列和第一行设置为索引?

Oli*_*Oli 24 python python-3.x pandas

当我读取CSV时,我可以说pd.read_csv('my.csv', index_col=3)它将第三列设置为索引.

如果我在内存中有一个pandas数据帧,我怎么能这样做呢?我怎么能说第一行也作为索引呢?第一列和第一列是字符串,矩阵的其余部分是整数.

vil*_*asv 21

按详细程度递增的顺序将第一列(或第 n 列)作为索引:

df.set_index(list(df)[0])
df.set_index(df.columns[0])
df.set_index(df.columns.tolist()[0])
Run Code Online (Sandbox Code Playgroud)

将第一行(或第 n 行)作为索引:

df.set_index(df.iloc[0].values)
Run Code Online (Sandbox Code Playgroud)

如果你想要一个多级索引,你可以同时使用两者:

df.set_index([df.iloc[0], df.columns[0]])
Run Code Online (Sandbox Code Playgroud)

请注意,使用列作为索引会自动将其删除为列。使用一行作为索引只是一个复制操作,不会从 DataFrame 中删除该行。


Y. *_*rel 13

无论行数多少,您都可以尝试

df= pd.read_csv('data.csv', index_col=0)

  • 该问题已经提到了这一点,并特别要求内存中的数据帧。 (2认同)

小智 11

也许试试set_index()?

df = df.set_index([2])
Run Code Online (Sandbox Code Playgroud)

  • `set_index`需要列标签.如果您的第3列有名称,这将引发`KeyError`. (4认同)
  • 为完整起见:如果该列具有非数字索引,则必须将数字替换为所述非数字索引,例如,df = df.set_index(['two'])。 (3认同)