根据 CSV 中单个列的值删除部分相似的条目
Removing partially similar entries based on a value from a single column in CSV
我有 CSV table,它是一段时间内来自不同用户的推文列表。该数据集包括推文和转发,除了主题标签或其他用户添加的附加评论外,它们是相同的。例如:
Column A
Column B
11/03/2022
We have a new president!
13/03/2022
We have a new president! #newpresident
14/03/2022
My mom is a president.
14/03/2022
RT @user: We have a new president! What is going to happen?
所有包含“我们有一位新总统!”的行对我来说被视为重复,我需要摆脱它们,所以原始行 #1 和 #3 是我唯一需要的。我试过 运行 这个:
import csv
import re
csvInput = open('input.csv', 'r', encoding="utf-8-sig", newline='')
csvOutput = open('output.csv', 'w', encoding="utf-8-sig", newline='')
csvReader = csv.reader(csvInput)
csvWriter = csv.writer(csvOutput)
prevRows = set()
for row in csvReader:
if row[2] in prevRows or re.sub('^RT @.*: ', '', row[2]) in prevRows:
continue
prevRows.add(row[2])
csvWriter.writerow(row)
csvOutput.close()
csvInput.close()
行不通。有没有办法修改这个或更好的解决方案?
pandas 模块可能非常有用:
import pandas as pd
pd.read_csv('input.csv').loc[~df['Column B'].str.contains('(#.+$|^RT @.+)')].to_csv('output.csv', index=False)
PS。未测试
我有 CSV table,它是一段时间内来自不同用户的推文列表。该数据集包括推文和转发,除了主题标签或其他用户添加的附加评论外,它们是相同的。例如:
Column A | Column B |
---|---|
11/03/2022 | We have a new president! |
13/03/2022 | We have a new president! #newpresident |
14/03/2022 | My mom is a president. |
14/03/2022 | RT @user: We have a new president! What is going to happen? |
所有包含“我们有一位新总统!”的行对我来说被视为重复,我需要摆脱它们,所以原始行 #1 和 #3 是我唯一需要的。我试过 运行 这个:
import csv
import re
csvInput = open('input.csv', 'r', encoding="utf-8-sig", newline='')
csvOutput = open('output.csv', 'w', encoding="utf-8-sig", newline='')
csvReader = csv.reader(csvInput)
csvWriter = csv.writer(csvOutput)
prevRows = set()
for row in csvReader:
if row[2] in prevRows or re.sub('^RT @.*: ', '', row[2]) in prevRows:
continue
prevRows.add(row[2])
csvWriter.writerow(row)
csvOutput.close()
csvInput.close()
行不通。有没有办法修改这个或更好的解决方案?
pandas 模块可能非常有用:
import pandas as pd
pd.read_csv('input.csv').loc[~df['Column B'].str.contains('(#.+$|^RT @.+)')].to_csv('output.csv', index=False)
PS。未测试