python - Pandas DataFrame ApplyMap 方法

标签 python pandas

我想尝试 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,则标志 = 1,否则标志 = 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 以及applymap

关于python - Pandas DataFrame ApplyMap 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21726275/

相关文章:

python - 如何在 uwsgi 配置中传递参数?

python - 为什么在 for 循环中将单词从复数转换为单数需要这么长时间 (Python 3)?

python - 为什么我在 matplotlib 中的绘图没有显示轴

python - 词典使用问题

python - 使用 Beautiful Soup 提取兄弟文本节点

python - 如何从通过 JavaScript 加载的页面的 XHR 请求中自动检索请求 URL(对于 python)

javascript - 使用自定义 Javascript 绑定(bind)在 Python 中嵌入 Gecko

python - 使用条件查找值

python - 使用仅对角线数据的表中的值创建一行

python - 如何在Python中以正确的方式将一列分成两部分?