如何根据特定条件更新数据框?通过使用 Pandas 删除不存在的目录

问题描述 投票:0回答:0

我在 images dir 中有带有

missing images
的数据框,在读取
labels 
文件后,contians
file_name,text
data with 2 columns (
labels.txt
),我的工作目录看起来像:

$ tree
.
├── sample
│   ├------- labels.txt
│   │------- imgs
│   │           └───├── 0.png
│   │               └── 3.png
│   │               └── 4.png
│   │               └── 5.png
│   │               └── 6.png
│   │               └── 7.png
│   │               └── 8.png
│   │               └── 10.png

labels.txt
文件:

0.jpg   Elégedetlenek az emberek a közoktatással? Belföld - Magyarország hírei 
1.jpg   Szeged - delmagyar.hu Delmagyar.hu 24 óra Szórakozás Sport Programok 
2.jpg   Állás Ingatlan Hárommilliárdot költenek a ,,boldog békeidőket" idéző Öt 
3.jpg   órát dolgoztak a Szabadság úszóházon, mire Illatoznak is a 
4.jpg   kis harangok, de csak közelről érezni - Madonna tavaly 
5.jpg   még meg tudta akadályozni, idén viszont Egy tálca zsíros 
6.jpg   kenyér - Milyen gyermekkora volt Belföld - Magyarország hírei 
7.jpg   Elégedetlenek az emberek a közoktatással? Elégedetlenek az emberek a 
8.jpg   közoktatással? Független Hírügynökség Az emberek nagyobb része elégedetlen a 
9.jpg   magyarországi közoktatás minőségével. Sokan nem tartják megfelelően felkészültnek a 
10.jpg   pedagógusokat és szükségesnek tartanák a tanárok gyakori, elsősorban pszichológiai

所以我写了一个小脚本来使用数据框读取文本文件:

import pandas as pd
from pathlib import Path
path = "./sample/" 

df = pd.read_csv(f'{path}labels.txt',
                 header=None,
                 delimiter='   ',
                 encoding="utf8",
                 error_bad_lines=False,
                 engine='python'
                 )
df.rename(columns={0: "file_name", 1: "text"}, inplace=True)
print(df.head(11))

阅读后的输出:

如果目录不存在,我试图只保留在图像目录中有图像的行删除或跳过它但是在它下面编写函数之后只删除新数据帧的最后一行(对于丢失的图像)

def is_dir_exist(filename):
    path = "/home/ngyongyossy/mohammad/OCR_HU_Tra2022/GPT-2_Parallel/process/sample/"
    path_to_file = f'{path}imgs/'+ filename # df['file_name'][idx] # 'readme.txt'
    path = Path(path_to_file)
    # print(path.is_file()) 
    return path.is_file() 

for idx in range(len(df)):
    # print(df['file_name'][idx])
    print(is_dir_exist(df['file_name'][idx]))
    if not is_dir_exist(df['file_name'][idx]):
        update_df = df.drop(df.index[idx])

print(update_df.head(11))

我得到了什么: 文件名文本

0      0.jpg  Elégedetlenek az emberek a közoktatással? Belf...
1      1.jpg  Szeged - delmagyar.hu Delmagyar.hu 24 óra Szór...
2      2.jpg  Állás Ingatlan Hárommilliárdot költenek a ,,bo...
3      3.jpg  órát dolgoztak a Szabadság úszóházon, mire Ill...
4      4.jpg  kis harangok, de csak közelről érezni - Madonn...
5      5.jpg  még meg tudta akadályozni, idén viszont Egy tá...
6      6.jpg  kenyér - Milyen gyermekkora volt Belföld - Mag...
7      7.jpg  Elégedetlenek az emberek a közoktatással? Elég...
8      8.jpg  közoktatással? Független Hírügynökség Az ember...
10    10.jpg  pedagógusokat és szükségesnek tartanák a tanár...

但是我的解释是只保留带有现有图像文件夹的行标签:

 file_name                                               text
0      0.jpg  Elégedetlenek az emberek a közoktatással? Belf...
3      3.jpg  órát dolgoztak a Szabadság úszóházon, mire Ill...
4      4.jpg  kis harangok, de csak közelről érezni - Madonn...
5      5.jpg  még meg tudta akadályozni, idén viszont Egy tá...
6      6.jpg  kenyér - Milyen gyermekkora volt Belföld - Mag...
7      7.jpg  Elégedetlenek az emberek a közoktatással? Elég...
8      8.jpg  közoktatással? Független Hírügynökség Az ember...
10    10.jpg  pedagógusokat és szükségesnek tartanák a tanár...
python pandas dataframe text pytorch
© www.soinside.com 2019 - 2024. All rights reserved.