Pandas read_excel保留A:Z列名

时间:2018-02-13 09:12:41

标签: python excel pandas

使用read_excel将excel文件导入pandas时,我想保留excel的列名和行名。 也就是说,我希望我的专栏可以命名为' A' B',' Z'' AA',& #39; AB'等等和从1开始的行。

有没有好办法呢?

2 个答案:

答案 0 :(得分:5)

您需要自定义mappings并将其应用于rename

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) )

答案 1 :(得分:0)

我前段时间做了什么:我使用列类型和&#34;标题&#34;指定了列名称。参数为&#34;无&#34;:

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)