所以我有一个pandas dataFrame,我想将两行变成多个标题。 所以
1 A | A | B | B
2 C | D | C | D
3 cat| dog|mouse|goose
到
A | B
C | D | C | D
1 cat| dog|mouse|goose
我找到了
df.columns = df.iloc[0]
工作1行,但我希望从第一行和第二行获得多个标题 预先感谢!
答案 0 :(得分:2)
使用StringContext(...).f(...)
创建它,然后将其分配回
MultiIndex
答案 1 :(得分:2)
通过分配第一行和第二行来创建MultiIndex
,最后通过DataFrame.iloc
按位置过滤出第一行:
df.columns = [df.iloc[0].values, df.iloc[1].values]
df = df.iloc[2:].reset_index(drop=True)
print (df)
A B
C D C D
0 cat dog mouse goose
但是如果从文件中使用read_csv
中的参数header=[0,1]
创建DataFrame会更好:
df = pd.read_csv(file, header=[0,1])
示例:
import pandas as pd
temp=u"""A,A,B,B
C,D,C,D
cat,dog,mouse,goose"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), header=[0,1])
print (df)
A B
C D C D
0 cat dog mouse goose