답변:
In [21]: df = pd.DataFrame([(1,2,3), ('foo','bar','baz'), (4,5,6)])
In [22]: df
Out[22]:
0 1 2
0 1 2 3
1 foo bar baz
2 4 5 6
두 번째 행 (인덱스 위치 1)의 값과 같도록 열 레이블을 설정합니다.
In [23]: df.columns = df.iloc[1]
인덱스에 고유 한 레이블이있는 경우 다음을 사용하여 두 번째 행을 삭제할 수 있습니다.
In [24]: df.drop(df.index[1])
Out[24]:
1 foo bar baz
0 1 2 3
2 4 5 6
인덱스가 고유하지 않은 경우 다음을 사용할 수 있습니다.
In [133]: df.iloc[pd.RangeIndex(len(df)).drop(1)]
Out[133]:
1 foo bar baz
0 1 2 3
2 4 5 6
를 사용 df.drop(df.index[1])
하면 두 번째 행과 동일한 레이블이있는 모든 행이 제거 됩니다 . 고유하지 않은 인덱스는 이와 같은 걸림돌 (또는 잠재적 버그)로 이어질 수 있기 때문에 인덱스가 고유한지주의하는 것이 좋습니다 (Pandas에서 필요하지 않더라도).
"foo"
입니다. 이 문제를 해결하는 한 가지 방법은 첫 번째 행을 명시 적으로 선택하는 것 df.columns = df.iloc[np.where(df[0] == 'foo')[0][0]]
입니다..
을 나타내는 매개 변수를 통해 read_csv 또는 read_html 생성자 에서 행 인덱스를 지정할 수 있습니다 . 이것은 정크라고 생각되는 모든 선행 행을 자동으로 삭제하는 장점이 있습니다.header
Row number(s) to use as the column names, and the start of the data
import pandas as pd
from io import StringIO
In[1]
csv = '''junk1, junk2, junk3, junk4, junk5
junk1, junk2, junk3, junk4, junk5
pears, apples, lemons, plums, other
40, 50, 61, 72, 85
'''
df = pd.read_csv(StringIO(csv), header=2)
print(df)
Out[1]
pears apples lemons plums other
0 40 50 61 72 85