按行替换值

2024-09-22 16:31:18 发布

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

我有一个包含以下列的数据帧:

  Index(['fullName', 'firstName', 'lastName', 'companyUrl', 'Domain',
   'Email Format 1', 'Email Format 2', 'Email Format 3'],
  dtype='object')

数据是这样的

   fullName     firstName   lastName    companyName    Domain        Email Format 1          Email Format 2          Email Format 3
0   Olamide A.  Olamide         A       Wells Fargo  wellsfargo.com jane.doe@wellsfargo.com   jane@wellsfargo.com   jdoe@wellsfargo.com

样本数据:Dataframe Image

现在我想用jane.doe在那里,然后用firstname.lastname替换,如果jane在那里,用firstname替换,如果jdoe在那里,用firstname+lastname的第一个字母替换

有人能帮我们编码吗


Tags: 数据comformatemaildomainfirstnamedoefullname
1条回答
网友
1楼 · 发布于 2024-09-22 16:31:18

你应该提供一些更好的样品。下面是我设法迅速整理的内容


>>> my_index = pd.Index(['fullName', 'firstName', 'lastName', 'companyUrl', 'Domain',
    ...:    'Email Format 1', 'Email Format 2', 'Email Format 3'],
    ...:   dtype='object')

# Adding some sample data to dict `d`
>>> d={0: {'fullName': 'Olamide',
    ...:   'firstName': 'A.',
    ...:   'lastName': 'Olamide',
    ...:   'companyUrl': 'A',
    ...:   'Domain': 'wellsfargo.com',
    ...:   'Email Format 1': 'jane.doe@wellsfargo.com',
    ...:   'Email Format 2': 'jane@wellsfargo.com',
    ...:   'Email Format 3': 'jdoe@wellsfargo.com'}
    ...: ,
    ...: 1: {'fullName': 'Plamide',
    ...:   'firstName': 'D.',
    ...:   'lastName': 'Plamide',
    ...:   'companyUrl': 'D',
    ...:   'Domain': 'wellsfargo.com',
    ...:   'Email Format 1': 'jadoe@wellsfargo.com',
    ...:   'Email Format 2': 'jane@wellsfargo.com',
    ...:   'Email Format 3': 'jdoe@wellsfargo.com'}
    ...:   }

# Converting dict `d` to dataframe
>>> df=pd.DataFrame.from_dict(d, orient='index')

# Checking original entries
>>> df
  fullName firstName lastName companyUrl          Domain           Email Format 1       Email Format 2       Email Format 3
0  Olamide        A.  Olamide          A  wellsfargo.com  jane.doe@wellsfargo.com  jane@wellsfargo.com  jdoe@wellsfargo.com
1  Plamide        D.  Plamide          D  wellsfargo.com     jadoe@wellsfargo.com  jane@wellsfargo.com  jdoe@wellsfargo.com

# Define function to replace any 'jane.doe' findings
>>> def f(row):
    replaced = []
    for cell in row:
        if 'jane.doe' in str(cell):
             cell = re.sub('jane.doe', ''.join([row.firstName, row.lastName]), cell)

        replaced.append(cell)

    return pd.Series(replaced, index=my_index)


>>> df.apply(f, axis=1)
Out[94]:
  fullName firstName lastName companyUrl          Domain            Email Format 1       Email Format 2       Email Format 3
0  Olamide        A.  Olamide          A  wellsfargo.com  A.Olamide@wellsfargo.com  jane@wellsfargo.com  jdoe@wellsfargo.com
1  Plamide        D.  Plamide          D  wellsfargo.com      jadoe@wellsfargo.com  jane@wellsfargo.com  jdoe@wellsfargo.com

不可怕,不伟大

相关问题 更多 >