我是新来的Python
我想用pandas
用于读取数据。我已经做了一些搜索和努力来解决我的问题,但我仍然在挣扎。提前感谢您的帮助!
我有一个如下所示的 .txt 文件;
skip1
A1| A2 |A3 |A4# A5# A6 A7| A8 , A9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
END***
Some other data starts from here
第一个任务是
我想指定 A1、A2、A3、A4、A5、A6、A7、A8 和 A9 作为列名称。但是,有多个分隔符,例如' ','|','#'
这使得在读取文件时分配分隔符变得很麻烦。我这样尝试过;
import pandas as pd
import glob
filelist=glob.glob('*.txt')
print(filelist)
df = pd.read_csv(filelist,skiprows=1,skipfooter=2,skipinitialspace=True, header=0, sep=r'\| |,|#',engine='python')
但当我检查Spyder的数据浏览器df时,似乎什么也没有发生。
第二个任务是在读取过程中删除从行开始的数据END***
我不需要。标头始终具有相同的长度。但是,skipfooter 需要跳过的行数,这应该在文件之间进行更改。
已经提出了一些问题,但似乎我无法让他们解决我的问题!
如何使用多个分隔符读取 pandas 中的 txt 文件 https://stackoverflow.com/questions/36559763/how-to-read-txt-file-in-pandas-with-multiple-delimiters
将文本导入带有多个分隔符的 pandas https://stackoverflow.com/questions/26551662/import-text-to-pandas-with-multiple-delimiters/26551913
pandas-在将文件读入文件时忽略特定字符串之后的所有行 https://stackoverflow.com/questions/19138175/pandas-ignore-all-lines-following-a-specific-string-when-reading-a-file-into-a
编辑:关于删除读取删除从行开始的数据END
如果b.txt文件是这样的
b.txt
skip1
A1| A2 |A3 |A4# A5# A6 A7| A8 , A9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
END123
Some other data starts from here
使用下面的第二种解决方案;
txt = open('b.txt').read().split('\nEND')[0]
_, h, txt = txt.split('\n', 2)
pat = r'[\|, ,#,\,]+'
names = re.split(pat, h.strip())
pd.read_csv(
pd.io.common.StringIO(txt),
names=names, header=None,
engine='python')
得到这个,
A1 A2 A3 A4 A5 A6 A7 A8 A9
0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
2 1 2 3 4 5 6 7 8 9