加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pandas DataFrame ApplyMap方法

发布时间:2020-12-16 23:43:58 所属栏目:Python 来源:网络整理
导读:我想试试Pandas DataFrame对象的applymap方法的功能.这是用例: 假设我的DataFrame df1如下: Age ID Name0 27 101 John1 22 102 Bob2 19 103 Alok3 27 104 Tom4 32 105 Matt5 19 106 Steve6 5 107 Tom7 55 108 Dick8 67 109 Harry 现在我想创建一个标志变量
我想试试Pandas DataFrame对象的applymap方法的功能.这是用例:

假设我的DataFrame df1如下:

Age   ID       Name
0   27  101    John
1   22  102    Bob
2   19  103    Alok
3   27  104    Tom
4   32  105    Matt
5   19  106    Steve
6    5  107    Tom
7   55  108    Dick
8   67  109    Harry

现在我想创建一个标志变量,其逻辑是如果元素的长度小于2,则flag = 1 else flag = 0.

为了运行这个元素,我想使用applymap方法.为此,我创建了一个用户定义的函数,如下所示:

def f(x): 
   if len(str(x))>2: 
       df1['Flag']=1
   else: 
      df1['Flag']=0

然后我运行了df1.applymap(f),它给出了:

Age    ID  Name
0  None  None  None
1  None  None  None
2  None  None  None
3  None  None  None
4  None  None  None
5  None  None  None
6  None  None  None
7  None  None  None
8  None  None  None

而不是使用标志值创建标志变量.如何使用applymap实现所需的功能?

我们不能在用户定义的函数中使用DataFrame变量名或pandas语句吗?即,df1 [‘Flag’]在f()的定义内有效吗?

解决方法

函数f(x)对于pandas并不特殊 – 它只是一个常规的python函数.因此f中范围内唯一的数据是变量x df1的其他成员不可用.

来自applymap文档:

func : function

Python function,returns a single value from a single value

所以你可以试试这个:

def f(x):
    if len(str(x)) <= 3: return 1
    else: return 0

应用时,为帧中的每个元素输出1/0:

df1.applymap(f)

>>>
   Age  ID  Name
0    1   1     0
1    1   1     1
2    1   1     0
3    1   1     1
4    1   1     0
5    1   1     0
6    1   1     1
7    1   1     0
8    1   1     0

要使用结果在每行中添加另一个变量,每行需要一个值,例如,

df1['Flag'] = df1.applymap(f).all(axis=1).astype(bool)

>>> df1

   Age   ID   Name   Flag
0   27  101   John  False
1   22  102    Bob   True
2   19  103   Alok  False
3   27  104    Tom   True
4   32  105   Matt  False
5   19  106  Steve  False
6    5  107    Tom   True
7   55  108   Dick  False
8   67  109  Harry  False

另请参阅https://stackoverflow.com/a/19798528/1643946,其中包括申请,地图以及applymap.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读