python中的lappy等价函数

python中的lappy等价函数,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有7个电话号码条目的数据帧df,我想创建新的重命名列,比如ph1。。ph7,并用清理过的电话号码值填充,即删除空格“/”、“-”、“+”等 有了R,我可以很容易地使用Lappy。在Python中有什么方法可以做到这一点吗? 我知道do.call()也可以做同样的事情,但面临着同样的问题 con_1 <- con[, c("ph1", "ph2", "ph3", "ph4", "ph5", "ph6", "ph7") := lapply(.SD, funct

我有7个电话号码条目的数据帧df,我想创建新的重命名列,比如ph1。。ph7,并用清理过的电话号码值填充,即删除空格“/”、“-”、“+”等

有了R,我可以很容易地使用Lappy。在Python中有什么方法可以做到这一点吗? 我知道do.call()也可以做同样的事情,但面临着同样的问题

con_1 <- con[, c("ph1", "ph2", "ph3", "ph4", "ph5", "ph6", "ph7") := 
               lapply(.SD, function(x) { gsub(paste(unlist(list(" ", "/", "-", "+")), collapse = "|"), replace = "", x) }), 
             .SDcols = c("phone1", "phone2", "phone3", "phone4", "phone5", "phone6", "phone7")]

con_1假设您拥有以下数据帧(与您的数据帧完全不同,因为您的数据帧中不会更新任何内容):

您可以定义应用于每个单元格的函数<代码>应用映射
执行此操作。这里我定义了一个函数
clean\u df
,它将删除
+
-
/

def clean_up_df(data):
    rep = data.replace('/', '')       # Replace '/' by ''
    rep = rep.replace('-', '')        # Replace '-' by ''
    rep = rep.replace('+', '')        # Replace '+' by ''
    return rep

# Columns to process
phone_columns = ['phone1', 'phone2', 'phone3',
                  'phone4', 'phone5', 'phone6', 'phone7']
# Processing the function clean_up_df
df[phone_columns] = df[phone_columns].applymap(clean_up_df)
# Display
print(df)
#        kac   play_id      phone1     phone2 phone3 phone4     phone5 phone6     phone7
# 0  5004490  20002075  0900031349  090891349
# 1  5003807  00601731                                       088235311
# 2  5003808  00601731                                                         088235311

现在,如果要处理特定列,可以使用
apply
axis=1
这意味着:将此函数应用于数据帧的每一行。 这里有一个例子:

# column to proceed
phone_col_name = "phone1"

# Same function with the column specified
def clean_up(data):
    rep = data[phone_col_name].replace('/', '')
    rep = rep.replace('-', '')
    rep = rep.replace('+', '')
    return rep

# Process
df[phone_col_name] = df.apply(clean_up, axis=1)

# Display
print(df)
#        kac   play_id      phone1     phone2 phone3 phone4         phone5 phone6         phone7
# 0  5004490  20002075  0900031349  090891349
# 1  5003807  00601731                                       08+82+35+31/1
# 2  5003808  00601731                                                             08/82/35/31/1

您的R代码中的
con
是什么?您认为数据帧在unput中是什么样子的?您可以使用
apply
在所有DataFrame上计算函数。con是R DataFrame,但我想将其转换为等效的python代码。我们可以用与R相同的方式使用数据帧类型:熊猫还是火花?您可以标记这两个库。顺便说一下,这是R
数据。表
代码不是标准的R库。
def clean_up_df(data):
    rep = data.replace('/', '')       # Replace '/' by ''
    rep = rep.replace('-', '')        # Replace '-' by ''
    rep = rep.replace('+', '')        # Replace '+' by ''
    return rep

# Columns to process
phone_columns = ['phone1', 'phone2', 'phone3',
                  'phone4', 'phone5', 'phone6', 'phone7']
# Processing the function clean_up_df
df[phone_columns] = df[phone_columns].applymap(clean_up_df)
# Display
print(df)
#        kac   play_id      phone1     phone2 phone3 phone4     phone5 phone6     phone7
# 0  5004490  20002075  0900031349  090891349
# 1  5003807  00601731                                       088235311
# 2  5003808  00601731                                                         088235311

# column to proceed
phone_col_name = "phone1"

# Same function with the column specified
def clean_up(data):
    rep = data[phone_col_name].replace('/', '')
    rep = rep.replace('-', '')
    rep = rep.replace('+', '')
    return rep

# Process
df[phone_col_name] = df.apply(clean_up, axis=1)

# Display
print(df)
#        kac   play_id      phone1     phone2 phone3 phone4         phone5 phone6         phone7
# 0  5004490  20002075  0900031349  090891349
# 1  5003807  00601731                                       08+82+35+31/1
# 2  5003808  00601731                                                             08/82/35/31/1