我尝试清理多个txt文件,并将结果保存为一个txt文件:
import glob
import errno
import pandas as pd
import numpy as np
import os
from io import BytesIO
import sys
path = 'path/.../*.txt'
files = glob.glob(path)
for fname in files:
#print(fname)
with open(fname) as f:
data = pd.read_csv(fname,header=None,sep=' ')
base = os.path.basename(fname)
os.path.splitext(base)
shortname = os.path.splitext(base)[0]
data = data.drop([1,2,3,4], axis=1)
data = data.drop_duplicates()
#print(data)
data=data.reset_index(drop=True)
#print(data)
data = data.T
#print(data)
data.insert(0, 'name', shortname, True)
#print(data)
data.columns = data.iloc[0]
print(data)
pass # do what you want
with open('C:/Users/yl0340/Desktop/clean/clean15.txt','a+') as f:
print(data, file = f)
当我运行它时,它会给我这样的输出(我没有全部显示):
0 Shot9_010_559 19 4
0 Shot9_011_157 19 4
0 Shot9_011_157 19 4
0 Shot9_012_235 19 4
0 Shot9_012_235 19 4
0 Shot9_013_288 19 4
0 Shot9_013_288 19 4
0 Shot9_014_79 19 4
0 Shot9_014_79 19 4
0 Shot9_015_335 19 4
0 Shot9_015_335 19 4
0 Shot9_016_268 0 19 4
0 Shot9_016_268 0 19 4
0 Shot9_017_399 16
0 Shot9_017_399 16
0 Shot9_018_189 2 19 18
0 Shot9_018_189 2 19 18
0 Shot9_019_399 19 2
0 Shot9_019_399 19 2
我不知道为什么每行开头都有一个“0”。此外,当我打开输出文件(clean15.txt)时,它只显示输出的最后一行,如:
0 Shot9_019_399 19 2
我不确定哪一部分我做得不对
看看https://pandas.pydata.org/docs/reference/api/pandas.concat.html
您可以使用每个文件中的数据和短名称作为键创建dict。最后:
pd.concat(mydict.values(), mydict.keys(), names=['shortname']).to_csv()
data
是一个完整的数据帧李>data
附加到数据帧列表中Pandas通常会使用int为数据帧编制索引。我无法从您的输入中准确判断您希望哪些数据成为输出文件中的第一个值,但在将数据帧导出到文件之前,请尝试以下操作:
相关问题 更多 >
编程相关推荐