Pandas从文本文件中读取_csv(),其中数据开始/结束由特定字符串标记

gmxoilav  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(130)

我从文本文件中读取了数百个模型输出,其中前nrow是与模型运行无关的文本行(注意:nrows因文件而异)。但是,我有逗号分隔的数据要从文本文件导入。此数据可以在"BREAK THROUGH@WT,ITERATION "和" END BREAK THROUGH@WT "(见下文)。我目前在read_csv()中使用nrow和skiprows的方法不起作用,因为这些参数在不同的文件中会有所不同。有没有关于如何使用字符串"marker"从文本文件导入csv数据的想法。谢谢!
要读取的模型输出/输入文件如下所示
正文
文本0.314347435514229
文本文本文本文本文本文本
突破@WT,迭代
1千
3千
6 0.0
端部穿透@WT
Dataframe 中提取的数据如下所示
1千
3千
6 0.0

gzszwxb4

gzszwxb41#

对名为“your_column”的列使用伪数据:

words = ["BREAK THROUGH @ WT, ITERATION", "END BREAK THROUGH @ WT"]

df = pd.read_csv(...)
df = df.loc[df["your_column"].isin(words).cumsum() & ~df["your_column"].isin(words)].reset_index(drop=True)
print(df)
dwbf0jvd

dwbf0jvd2#

看起来我能够在没有regex的情况下找到解决方案,但仍然好奇regex如何简化我的生活。

beg_id = "BREAK THROUGH @ WT, ITERATION =     1\n"
end_id = "END BREAK THROUGH @ WT"
# for f in cmtp_fnames:
f = 'data/cmtp/PFOS_Dry_LS_1m_AD+R.OUT'
with open(f) as fname:
    data = fname.read()
    data = data[data.find(beg_id):]
    data = data[data.find(beg_id)+len(beg_id):data.find(end_id)]
    data=data.splitlines(False)
    data=pd.DataFrame(sub.split(",") for sub in data).drop(labels=2,axis=1)

相关问题