python pandas 数据帧写入多行 header
python pandas dataframe write multi row header
数据1
A B C D E <--- columns
a b c d e
a b c d e
a b c d e
result what i want
A B C D E <--- columns
A B C D E <--- columns
A B C D E <--- columns
a b c d e
a b c d e
a b c d e
我找了这个,最后没找到:)
如何获得好的结果?我请求你的帮助。谢谢
非常感谢
转换为 Excel 时,创建了一个新的空列。
test
a b c d e f g h i j k l m n o p q r s t u v w x y
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
dir_path = os.path.dirname(os.path.realpath(__file__))
df = pd.read_excel(dir_path + '/import/sample.xlsx', header=0)
headers = [list(df.columns), list(df.columns), list(df.columns)]
df.columns = pd.MultiIndex.from_arrays(headers)
writer = pd.ExcelWriter(dir_path + '/export/sample.xlsx', options={'strings_to_urls': False}, )
df.to_excel(writer, sheet_name='result')
writer.save()
result
a b c d e f g h i j k l m n o p q r s t u v w x y
a b c d e f g h i j k l m n o p q r s t u v w x y
a b c d e f g h i j k l m n o p q r s t u v w x y
<<<<---- empty row ---->>>> 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
我试图摆脱它但失败了。
df = df[df['a'] != ""]
df.columns = pd.MultiIndex.from_arrays([df.columns] * 3)
print (df)
A B C D E
A B C D E
A B C D E
0 a b c d e
1 a b c d e
2 a b c d e
如需定制MultiIndex
:
L = [list('abcde'), list('fghij'), list('klmno')]
df.columns = pd.MultiIndex.from_arrays(L)
print (df)
a b c d e
f g h i j
k l m n o
0 a b c d e
1 a b c d e
2 a b c d e
也可以使用接下来的 2 个函数来创建 MultiIndex
:
编辑:
空行是 bug and solution is here:
writer = pd.ExcelWriter("file1.xlsx")
headers = pd.DataFrame(df.columns.tolist()).T
headers.to_excel(writer, header=False, index=False)
df.columns = pd.Index(range(len(df.columns)))
df.to_excel( writer, header=False, index=False, startrow=len(headers))
writer.save()
数据1
A B C D E <--- columns
a b c d e
a b c d e
a b c d e
result what i want
A B C D E <--- columns
A B C D E <--- columns
A B C D E <--- columns
a b c d e
a b c d e
a b c d e
我找了这个,最后没找到:)
如何获得好的结果?我请求你的帮助。谢谢
非常感谢
转换为 Excel 时,创建了一个新的空列。
test
a b c d e f g h i j k l m n o p q r s t u v w x y
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
dir_path = os.path.dirname(os.path.realpath(__file__))
df = pd.read_excel(dir_path + '/import/sample.xlsx', header=0)
headers = [list(df.columns), list(df.columns), list(df.columns)]
df.columns = pd.MultiIndex.from_arrays(headers)
writer = pd.ExcelWriter(dir_path + '/export/sample.xlsx', options={'strings_to_urls': False}, )
df.to_excel(writer, sheet_name='result')
writer.save()
result
a b c d e f g h i j k l m n o p q r s t u v w x y
a b c d e f g h i j k l m n o p q r s t u v w x y
a b c d e f g h i j k l m n o p q r s t u v w x y
<<<<---- empty row ---->>>> 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
我试图摆脱它但失败了。
df = df[df['a'] != ""]
df.columns = pd.MultiIndex.from_arrays([df.columns] * 3)
print (df)
A B C D E
A B C D E
A B C D E
0 a b c d e
1 a b c d e
2 a b c d e
如需定制MultiIndex
:
L = [list('abcde'), list('fghij'), list('klmno')]
df.columns = pd.MultiIndex.from_arrays(L)
print (df)
a b c d e
f g h i j
k l m n o
0 a b c d e
1 a b c d e
2 a b c d e
也可以使用接下来的 2 个函数来创建 MultiIndex
:
编辑:
空行是 bug and solution is here:
writer = pd.ExcelWriter("file1.xlsx")
headers = pd.DataFrame(df.columns.tolist()).T
headers.to_excel(writer, header=False, index=False)
df.columns = pd.Index(range(len(df.columns)))
df.to_excel( writer, header=False, index=False, startrow=len(headers))
writer.save()