pandas 如何替换数据框列值中的特定字符串?

ykejflvf  于 2023-03-06  发布在  其他
关注(0)|答案(2)|浏览(151)

我有一个input.txt文件,其中有2列(file_name,text),我想替换text列中出现的""分隔符字符(此处表示选项卡,因为我使用此字符创建了txt文件)
输入文件示例:

0.jpg   Jól olvasom?   Összesen négy, azaz 4   számot játszott   el 
1.jpg   a csapat a   koncerten  Ilyet még nem is hallottam

我写了下面的代码:

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

因此,我想将"tab"替换为"single space

for idx in range(len(df)):
 df['text'][idx].replace("   "," ")

因此,预期输出:

0.jpg   Jól olvasom? Összesen négy, azaz 4 számot játszott el 
1.jpg   a csapat a koncerten Ilyet még nem is hallottam
xcitsw88

xcitsw881#

你真的需要Pandas来做这些吗?

import re

with (open('labels.txt', encoding='utf-8') as fp1,
      open('labels_clean.txt', mode='w', encoding='utf-8') as fp2):
    for row in fp1:
        if row.strip():
            file_text, text = re.split(r'\s{3}', row, maxsplit=1)
            text = re.sub(r'\s+', ' ', text)
            fp2.write(f"{file_text}{' ':4}{text}\n")

labels_clean.txt的含量:

0.jpg    Jól olvasom? Összesen négy, azaz 4 számot játszott el 
1.jpg    a csapat a koncerten Ilyet még nem is hallottam
83qze16e

83qze16e2#

感谢所有的意见之前。作为解决方案提到,我们并不真的需要Pandas,我们可以使用它后,处理文本

import pandas as pd
import json
CLEAN_TEXT = True
path= './'
if CLEAN_TEXT:
    import re
    with open(f'{path}labels.txt', encoding='utf-8') as fp1:
     with open(f'{path}labels_clean.txt', mode='w', encoding='utf-8') as fp2:
        for row in fp1:
            if row.strip():
                file_text, text = re.split(r'\s{3}', row, maxsplit=1)
                text = re.sub(r'\s+', ' ', text)
                fp2.write(f"{file_text}{' ':4}{text}\n")

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

相关问题