繁体   English   中英

如何将 dataframe 中的所有列传递到不同的用户定义的 function

[英]how to pass all the column from dataframe into different user defined function

如何将 dataframe 中的所有列传递到不同的用户定义的 function

这是我的 dataframe 看起来像

    data = [['tom', 10, 9876765143, 'SUN 1023'], ['nick', 15, 98767654312, 'SUN 1023'], ['juli', 14, 98769876541, 'SUN 1023']]    
    df = pd.DataFrame(data, columns = ['Name', 'Age', 'Number', 'Address'])         
    df 

这里是 function 现在我只展示一个 function

        def number(inp):
            import re
            regex = r'^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$'
            inp = inp.replace(regex, 'XXXXXXX')
            print (inp)

  number(df.Number)

它抛出错误

     ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

similarly i have multiple function i just want to pass each column from dataframe with the value associated within the column of dataframe into each user defined function like i have a function number similarly i have other function def new() def beg() one by one . 有没有办法解决这个问题

为什么还要使用 function? 您可以直接将正则表达式模式应用于相关列。

regex = r'^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$'

>>> df['Number'].astype(str).str.replace(regex, 'XXXXXXX')
0    XXXXXXX
1    XXXXXXX
2    XXXXXXX
Name: Number, dtype: object

如果您需要 function:

import random

def phone_number(series):
    regex = r'^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$'
    return series.str.replace(regex, 'X' * random.randrange(3, 8))

>>> phone_number(df['Number'].astype(str))
0    XXXXXXX
1    XXXXXXX
2    XXXXXXX
Name: Number, dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM