正如标题所述,df.reset_index()
目前在我的几个列中删除了前导零,因为这些列被转换为int 64。Excel文件由产品和业务代码组成,显示哪些代码属于不同的聚合。不同的代码可能有不同数量的前导零,代码本身也有不同数量的if位,所以.zfill()
并不能完全解决这个问题。我手头有一个快速解决方案,修改数据,但我想学习如何在未来绕过这些问题。
这是我当前在循环中读取文件的方式:
df = pd.read_excel("mappingOfAggregates.xlsx", index_col=[0,1,2,3], dtype=str)
我也曾在读取每个文件后使用df = df.astype('object')
,但当我使用df.reset_index()
时,它似乎并不影响最终结果。
ChatGPT建议我重置索引,然后在每一列上使用.astype('object')
--这和人们期望的一样好。
在正确的方向上的任何指针都是收到的感谢。
1条答案
按热度按时间slhcrj9b1#
您可以使用
index_col
参数保留索引,但要保留前导零,您需要将列的类型指定为字符串而不是数值。假设你有列
A
,B
,C
和D
作为索引,你可以通过提供一个字典,每个列名对应于str
,'str'
或pd.StringDtype()
,如下所示: