在python中循环文本文件并获取列中具有NaN值的行



我有多个带有多个制表符分隔列的文本文件,我想从中提取列PTA中具有NaN值的行,并将文件名作为附加列添加到这些提取的行中。

例如:

File1

i       B       C  D  E  F  G       H       I       J      PTA  K  L
0  0.24055  0.31092   0.03447   0.00015   0.93464   0.08232  0.52609  0.00560  0.44018  0.06337   236   770
1  0.43976  0.45359   0.01220   0.93317   0.05711   0.06316  0.49310  0.05882  0.51825  0.18522   433   573
2  0.48067  0.17356   0.96903   0.02968   0.08864   0.05567  0.30423  0.02337  0.01981  0.56240   481   525
3  0.41872  0.18580   0.00191   0.08048   0.90871   0.02035  0.23598  0.01610  0.19815  NaN   422   584

File2

i       B       C  D  E  F  G       H       I       J      PTA  K  L
0  0.1234  0.31092   0.356   0.00015   0.93464   0.08232  0.52609  0.5873  0.0034  0.06337   367   985
1  0.975  0.367   0.01220   0.875   0.05711   0.0365  0.49310  0.05882  0.51825  NaN   635   784
2  0.48067  0.17356   0.96903   0.02968   0.08864   0.05567  0.30423  0.02337  0.01981  0.823   956   213
3  0.41872  0.18580   0.00191   0.08048   0.90871   0.02035  0.23598  0.01610  0.19815  1.30621   678   943

预期输出df:

i       B       C  D  E  F  G       H       I       J      PTA  K  L
3  0.41872  0.18580   0.00191   0.08048   0.90871   0.02035  0.23598  0.01610  0.19815  NaN   422   584   File1
1  0.975  0.367   0.01220   0.875   0.05711   0.0365  0.49310  0.05882  0.51825  NaN   635   784   File2

我想使用python对多个文件执行此操作。目前我已经尝试了这个代码,但我不确定如何将其放入正确的循环中:

# import required module
import os
import pandas as pd
# assign directory
directory = 'files'

for filename in os.listdir(directory):
f = os.path.join(directory, filename)
df=pd.read_csv(f, sep='t',comment='#')
print(df)
rows=df[df['PTA'].isna()]
print(rows)

目前,我缺少将这些行添加到新数据帧中的部分。

在迭代文件时,将带文件名的新列添加到过滤数据中,append()将新的dataframe添加到列表中,pd.concat()将列表中的所有数据帧添加到

...
na_data = []
for filename in os.listdir(directory):
f = os.path.join(directory, filename)
df=pd.read_csv(f, sep='t',comment='#')

rows=df[df['PTA'].isna()]
if not rows.empty():
rows['filename'] = filename
na_data.append(rows)
pd.concat(na_data)

最新更新