将excel索引转换为pandas索引

时间:2017-08-07 13:56:33

标签: python pandas

为了给出一些背景故事,我创建了excel工作表,将excel列索引转换为pandas索引。在essense中只是一个简单的Vlookup,在定义的表上,例如列A = 0,列B = 1。它完成了工作,但它并不像我希望的那样高效。

我在我的函数上使用这些索引来重命名这些字段以遵循我们当前的命名法。 e.g

df = df.rename(columns={df.columns[5]: "Original Claim Type",
                        df.columns [1]:"Date of Loss",
                        df.columns[3]:"Date Reported (tpa)",
                        df.columns[2]:"Employer Report Date",
                        df.columns[4]:"Original Status",
                        df.columns[6]:"Date Closed",
                        df.columns[27]:"(net)Total Paid",
                        df.columns[23]:"(net) Total Incurred",
                        df.columns[25]:"NET Paid(Med)",
                        df.columns[26]:"NET Paid(Exp)",
                        df.columns[24]:"NET Paid (Ind)",
                        df.columns[18]:"Original Litigation",
                        df.columns[7]:"Date of Hire",
                        df.columns[8]:"Date of Birth",
                        df.columns[9]:"Benefit State",
                        df.columns[15]:"Original Cause",
                        df.columns[17]:"Body Part",
                        df.columns[32]:"TTD Days"})

我的新解决方案是创建一个Dictionairy,用于映射值及其相应的索引。

The image is a snippet of the excel file, so I list the column header where it can be found on the file, and the vlookup formula gives the corresponding python index (It takes into account that pandas index starts at 0, thus subtracting all values by 1)

excel_index={'A':0,'B':1,'C':2}
test={"Claim Number":[0,1,2,3,4,5]}
test=pd.DataFrame(test)
test=test.rename(columns={ test.columns[excel_index['A']]: "Frog"})

它有效,但我唯一的问题是我必须事先手动输入所有索引值。

什么是更有效的方法来实现这一目标?

布兰登

1 个答案:

答案 0 :(得分:1)

如果您有一列索引名称,例如示例中的on,则可以在pd.read_excel命令中指定。由于您的索引列为5,因此它将如下所示:

df = pd.read_excel('yourfilename.xlsx', index_col=5)