读取后,在pandas中使用不同的行作为标签

时间:2015-05-12 20:43:38

标签: python pandas

我需要使用第三行作为数据帧的标签,但保留前两行用于其他用途。如何将现有数据框上的标签更改为现有行?

基本上这个数据帧

A B C D
1 2 3 4
5 7 8 9
a b c d
6 4 2 1

成为

a b c d
6 4 2 1

我不能在读入文件时设置标题,因为我需要前两行和标签进行一些处理

2 个答案:

答案 0 :(得分:1)

首先将前两行复制到新的DataFrame中。然后使用第二行中包含的数据重命名列。最后,删除前三行数据。

import pandas as pd

df = pd.DataFrame({'A': {0: '1', 1: '5', 2: 'a', 3: '6'},
                   'B': {0: '2', 1: '7', 2: 'b', 3: '4'},
                   'C': {0: '3', 1: '8', 2: 'c', 3: '2'},
                   'D': {0: '4', 1: '9', 2: 'd', 3: '1'}})

df2 = df.loc[:1, :].copy()
df.columns = [c for c in df.loc[2, :]]
df.drop(df.index[:3], inplace=True)

>>> df
   a  b  c  d
3  6  4  2  1

>>> df2
   A  B  C  D
0  1  2  3  4
1  5  7  8  9

答案 1 :(得分:1)

一种方法是采取切片然后覆盖列:

In [71]:

df1 = df.loc[3:]
df1.columns = df.loc[2].values
df1
Out[71]:
   a  b  c  d
3  6  4  2  1

然后,您可以将df分配给感兴趣的行:

In [73]:

df = df[:2]
df
Out[73]:
   A  B  C  D
0  1  2  3  4
1  5  7  8  9