Python将lambda函数应用于csv文件(大文件)

2024-10-01 15:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python将this函数hideEmail应用于我的csv文件(大文件)的特定列

功能示例:

def hideEmail(email):
    #hide email
    text = re.sub(r'[^@.]', 'x', email)
    return text 

Csv文件(大文件>;1gb):

    id;Name;firstName;email;profession
    100;toto;tata;test@test.com;developer
    101;titi;tete;test@test.com;doctor
    ..
    ..


Tags: 文件csv函数texttest功能recom
3条回答

使用熊猫

您可以使用前面问题中描述的pandas来应用作为参数传递的函数

要导出获得的数据帧,请使用here描述的to_csv函数

import pandas as pd

def hideEmail(email):
    #hide email
    text = re.sub(r'[^@.]', 'x', email)
    return text 
    

column_name = "email"

df = pd.read_csv(r'Path of your CSV file\File Name.csv')
df[column_name] = df[column_name].map(hideEmail)
df.to_csv(r'Path where you want to store the exported CSV file\File Name.csv')

如果没有数据帧,有点难以确定,但您可以尝试:

import pandas as pd #import pandas
df = pd.read_csv('enter_file_path_here') #read the data

df['col'] = df['col'].apply(lambda x: hideEmail(x))
#if you want to make it back to a csv:
df.to_csv('name.csv')

csv数据加载到DataFrame中:

df = pd.read_csv(r'/path/to/csv')

然后您可以直接使用pd.Series.str.replace,因为默认情况下它支持正则表达式:

df = df.astype(str).apply(lambda x: x.str.replace(r'[^@.]', 'x'), axis=1)

这就是说,如果您只想更改一个大的csv文件,pandas可能是一种过度使用。。您可能在sed有一个look。这里有一个例子:

sed -E 's/(\w+)@(\w+)/xxx@xxx/' /path/to/file.csv > /path/to/new_file.csv

相关问题 更多 >

    热门问题