我写了以下循环:
pdFrame = []
for dir, subdir, files in os.walk(path):
for file in files:
if glob2.fnmatch.fnmatch(file, '*.gz'):
columns = ['Gene_ID', file[:file.find('.')]]
df = pd.read_csv(os.path.join(dir, file), compression='gzip', sep='\t', names=columns, header=None)
df = df.set_index('Gene_ID')
for name, value in df.items():
pdFrame.append(value)
data_frame = pd.concat(pdFrame, axis=1, ignore_index=False)
data_frame.to_csv('final_samples.csv', header=True)
但是,我不断收到以下错误:
"NameError: name 'data_frame' 未定义"
根据错误,有一些值必须是 'False' ,这就是为什么这些值没有发布到变量,但我不明白为什么。
答案 0 :(得分:0)
您应该尝试在条件语句之外声明 data_frame
。在您的 if
语句不返回 true 的情况下,data_frame
永远不会被定义。因此,无法调用 data_frame.to_csv()
,因为它不存在。
或者,您可以在调用 to_csv() 之前检查 data_frame
是否为空
pdFrame = []
data_frame = None
for dir, subdir, files in os.walk(path):
for file in files:
if glob2.fnmatch.fnmatch(file, '*.gz'):
columns = ['Gene_ID', file[:file.find('.')]]
df = pd.read_csv(os.path.join(dir, file), compression='gzip', sep='\t', names=columns, header=None)
df = df.set_index('Gene_ID')
for name, value in df.items():
pdFrame.append(value)
data_frame = pd.concat(pdFrame, axis=1, ignore_index=False)
if data_frame is not None:
data_frame.to_csv('final_samples.csv', header=True)