如标题所述,
df.reset_index()
目前正在删除我的几列中的前导零,因为这些列已转换为 int64。 Excel 文件由产品和业务代码组成,显示哪些代码属于不同的聚合。不同的代码可能具有不同数量的前导零,并且代码本身具有不同数量的数字,因此 .zfill()
并不能完全消除它。我手头有一个快速修复方法,可以修改数据,但我想学习如何在将来解决此类问题。
这就是我目前在循环中读取文件的方式:
df = pd.read_excel("mappingOfAggregates.xlsx", index_col=[0,1,2,3], dtype=str)
我也曾在每个文件读完后使用
df = df.astype('object')
,但当我使用df.reset_index()
时似乎并不影响最终结果。
Chat GPT 建议我重置索引,然后在每一列上使用
.astype('object')
- 这正如人们所期望的那样有效。
感谢任何正确方向的指点。
使用
df.reset_index()
时,多个列中的前导零会丢失,因为这些列将转换为 int64
。 DataFrame 列包含产品和业务代码,它们可能具有不同数量的前导零。目标是重置索引而不丢失此信息。
df = pd.read_excel("mappingOfAggregates.xlsx", index_col=[0,1,2,3], dtype=str)
df = df.astype('object')
尽管在读取过程中将数据类型设置为
str
并随后使用astype('object')
,但在使用df.reset_index()
时问题仍然存在。
解决方案涉及两个主要步骤:
df = df.reset_index()
for col in df.columns:
df[col] = df[col].astype('object')
通过循环遍历每一列并将其数据类型设置为
object
,我们确保没有列自动转换为 int64
,保留前导零。
为了避免数据转换问题,尤其是在处理包含前导零的数据时,在整个数据处理管道中保持正确的数据类型至关重要。提供的解决方案确保即使在重置 DataFrame 中的索引后也保留前导零。