如何使用 Pandas 在数据框中查找第二个逗号 (,) 并将其替换为 -?

How to find and replace second comma (,) with - in a dataframe using Pandas?

我有这样的数据框:

Name Address
Anuj Anuj,Sinha,BB
Sinha Sinha,Anuj BB

在Adrress列中,我想将所有行中除第一个逗号之外的所有逗号(,)替换为-。

谁能给我建议可能的解决方案?

提供:

df.dtypes

Customer ID               Int64
First_name-Last_name     string
Address                  string
Phone                    string
Secondary_station        string
Customer_disconnected    string

如果最多有 2 个逗号,您可以使用这个简单的正则表达式:

df['Address'] = df['Address'].str.replace('(,.*),', r'-')

输出:

    Name        Address
0   Anuj  Anuj,Sinha-BB
1  Sinha  Sinha,Anuj BB

如果逗号可能超过2个,你可以这样做:

df['Address'] = df['Address'].str.split(',').apply(lambda x: x[0]+','+'-'.join(x[1:]))

或者,更高效:

splits = df['Address'].str.split(',', 1)
df['Address'] = splits.str[0]+','+splits.str[1].str.replace(',', '-')

您可以这样使用替换功能:

txt = "I like bananas"

x = txt.replace("bananas", "apples")

print(x)

会显示:

I like apples

对于您的数据框,您只需要以这种方式迭代思考您的值:

import pandas as pd

df = pd.DataFrame(
    {
        'name': ['Anuj', 'Sinha'],
        'adresse': ['Anuj,Sinha,BB', 'Sinha,Anuj BB']
    }
)
for colunm in df.columns:
    for index, value in enumerate(df[colunm]):
        df[colunm][index] = value.replace(',', '-')

print(df)

会显示:

    name        adresse
0   Anuj  Anuj-Sinha-BB
1  Sinha  Sinha-Anuj BB