首页 > 解决方案 > 为多个文本文件重复熊猫数据框流程?

问题描述

我希望读取大量文本文件,使用熊猫数据框处理文本文件,然后为每个输入文件输出一个新的文本文件。

我的代码在我处理单个文本文件时有效,但在我尝试遍历多个文本文件时无效。

我的单个文件代码是:

df = pd.read_csv('name.txt',sep='\s+',skiprows=22, header=None, names=header_list,)
df['offset'] = df.iloc[0,1]
df['offset_removed'] = df['mufluor']-df['offset']
df.to_csv('name_2.txt',index=None, sep=' ', mode='a')

我一直在尝试使用此代码循环浏览多个文件:

all_files=glob.glob(os.path.join(path,"*.txt"))
for file in all_files:
    file_name = os.path.split(file)[1]
    header_list=["energy","mufluor","io","ifluor_DT","ifluor_raw","counttime","itrans","irefer"]
    df = pd.read_csv(file_name,sep='\s+',skiprows=22, header=None, names=header_list,)
    df['offset'] = df.iloc[0,1]
    df['offset_removed'] = df['mufluor']-df['offset']

但这似乎不起作用,因为我的数据框中的值现在似乎是字符串?而不是浮动...我不确定为什么我的数据框中的数据类型发生了变化?

标签: pythonpandasdataframe

解决方案


不是答案

尝试:

header_list=["energy","mufluor","io","ifluor_DT","ifluor_raw","counttime","itrans","irefer"]


df1 = pd.read_csv('name1.txt',sep='\s+',skiprows=22, header=None, names=header_list,)
df1['offset'] = df1.iloc[0,1]
df1['offset_removed'] = df1['mufluor']-df1['offset']
df1.to_csv('name_1.txt',index=None, sep=' ', mode='a')


df2 = pd.read_csv('name2.txt',sep='\s+',skiprows=22, header=None, names=header_list,)
df2['offset'] = df2.iloc[0,1]
df2['offset_removed'] = df2['mufluor']-df2['offset']
df2.to_csv('name_2.txt',index=None, sep=' ', mode='a')

输出是你所期望的?


推荐阅读