Python Pandas read_excel保留A:Z列名
使用read_excel将excel文件导入pandas时,我希望保留excel的列名和行名。 也就是说,我希望我的列被命名为'A'、'B'、…'Z'、'AA'、'AB'等,以及从1开始的行和从1开始的行 有什么好办法吗?您需要自定义并将其应用于Python Pandas read_excel保留A:Z列名,python,excel,pandas,Python,Excel,Pandas,使用read_excel将excel文件导入pandas时,我希望保留excel的列名和行名。 也就是说,我希望我的列被命名为'A'、'B'、…'Z'、'AA'、'AB'等,以及从1开始的行和从1开始的行 有什么好办法吗?您需要自定义并将其应用于重命名: np.random.seed(100) df = pd.DataFrame(np.random.randint(10, size=(5,5))) print (df) 0 1 2 3 4 0 8 8 3 7 7 1 0
重命名
:
np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(5,5)))
print (df)
0 1 2 3 4
0 8 8 3 7 7
1 0 4 2 5 2
2 2 2 1 0 8
3 4 0 9 6 2
4 4 1 5 3 4
def colToExcel(col): # col is 1 based
excelCol = str()
div = col
while div:
(div, mod) = divmod(div-1, 26) # will return (x, 0 .. 25)
excelCol = chr(mod + 65) + excelCol
return excelCol
df = df.rename(index=lambda x: x+1, columns=lambda y: colToExcel(y+1) )
print (df)
A B C D E
1 8 8 3 7 7
2 0 4 2 5 2
3 2 2 1 0 8
4 4 0 9 6 2
5 4 1 5 3 4
备选方案:
def conv(num):
convStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Assign any base you'd like
b = len(convStr)
if num<b:
return convStr[num]
else:
return conv(num//b-1) + convStr[num%b]
df = df.rename(index=lambda x: x+1, columns=lambda y: colToExcel(y) )
def conv(num):
convStr=“abcdefghijklmnopqrstuvxyz”#分配您想要的任何基数
b=len(convStr)
if num我不久前所做的:我使用列类型指定列名,并将“header”参数指定为“None”:
不错,但是colToExcel函数看起来过于复杂了。也许不是+1@AntonvBR-是的,也许应该更好,我只想重用现有功能;)谢谢你。tbh,这就行了,我不知道怎样才能更好。这是我的第一个想法。@AntonvBR-谢谢。我环顾四周,修改了一个可以用于任何基础的函数。
def converter(dict):
converter = {}
for key in dict:
converter[key] = str
return converter
columntype_table = {'A': datatype.str,
'B': datatype.str,
'C': datatype.str,
'D': datatype.str,
'E': datatype.str,
'F': datatype.str,
'G': datatype.str,
'H': datatype.str}
data = pandas.read_excel(fileX, encoding=X, sheetname=Y, converters=converterDic(columns_dict), header=None)