首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫.apply()函数在python 3中并不总是被调用

熊猫.apply()函数在python 3中并不总是被调用
EN

Stack Overflow用户
提问于 2018-10-18 17:43:27
回答 1查看 87关注 0票数 0

你好,我想通过一个函数来增加一个全局变量'count‘,这个函数将在长度为1458的熊猫数据中被调用。

我已经读到了其他的答案,他们谈论.apply()不在的地方。因此,我遵从他们的建议,但计数变量仍然是4。

代码语言:javascript
复制
count = 0
def cc(x):
   global count
   count += 1
   print(count) 

#Expected final value of count is 1458 but instead it is 4
# I think its 4, because 'PoolQC' is a categorical column with 4 possible values
# I want the count variable to be 1458 by the end instead it shows 4


all_data['tempo'] = all_data['PoolQC'].apply(cc)

# prints 4 instead of 1458
print("Count final value is ",count)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-19 08:21:41

是的,观察到的效果是因为您有列的分类类型。这是聪明的熊猫,它只是计算申请每一个类别。你在那做的只是数数吗?我想不是,但你为什么需要这样的计算呢?你不能用df.shape吗?

我在这里看到了几种选择:

  1. 您可以更改列的类型。

all_data['tempo'] = all_data['PoolQC'].astype(str).apply(cc)

  1. 您可以使用不同的非分类列。
  2. 您可以使用df.shape查看df中有多少行。
  3. 您可以使用申请整个DataFrame,如all_data['tempo'] = df.apply(cc, axis=1)。在这种情况下,您仍然可以在cc函数中使用all_data‘’PoolQC‘中的任何内容,例如:

def cc(x): global count count += 1 print(count) return x['PoolQC']

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52879733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档