我需要使用第三行作为数据帧的标签,但保留前两行用于其他用途。如何将现有数据框上的标签更改为现有行?
基本上这个数据帧
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
我不能在读入文件时设置标题,因为我需要前两行和标签进行一些处理
答案 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