【发布时间】:2017-12-11 21:54:33
【问题描述】:
我正在将 Excel 表读取到数据框中,效果很好。但是,Excel 工作表中的一列有一个 ID 号,该 ID 号被强制为 5 位前向数字。因此,excel 表不是 32,而是 00032,对于 500,它将是 00500。当我将此文件读入 pandas 时,它会将这些数字转换为其基值,因此 00500 在数据框中变为 500。但是,当我试图将使用 5 位索引值的文件名与 ID 号匹配时,这实际上会导致问题。我只会使用列表系统,但我需要 pandas 在遍历行时轻松访问多列数据。这是要点:
downloads = r'C:\Users\...'
filelist = os.listdir(downloads)
SDC = []
for file in filelist:
if file.startswith('sdc'):
SDC.append(file[3:8])
print SDC
if SDC == []:
print "There are no downloaded files to grab at this time."
dir = r'C:\...'
os.chdir(dir)
for i, row in df.iterrows():
if row['SDC ID'] in SDC:
dir = r'C:\bleh\Temporary Folder' + row['Theme']
if not os.path.exists(dir):
os.makedirs(dir)
如何强制 pandas 中的原始值快速迭代并对照列表检查值?
【问题讨论】:
-
该列包含整数,所以
00500就是excel显示整数的方式 -
我明白了,但是我需要导入来强制保留额外的数字。我没有看到在导入时强制将列输入作为字符串的方法。
-
您正在将整数与字符串进行比较。无论格式如何,这永远不会起作用。选择一种类型并在该类型中进行比较。
-
据我记得,转换不是在 pandas 级别,而是在 xlrd 或 openpyxl 级别。他们尽可能将字符串转换为数字,因此即使您将转换器传递给 read_excel 函数,您也无法取回字符串。我会尝试找到github中提出的问题。
-
@ayhan。我撤销我之前的评论。目前尚不清楚您是否正确,但无论哪种方式,问题都不清楚。了解实际数据框中的内容在这里非常重要。它来自哪里无关紧要,OP 甚至懒得显示数据帧是如何加载的。