我正在学习 Python,我试图了解 apply() 方法在 Pandas 数据帧中的工作原理。
作为练习,我想使用一行代码将 str.upper() 方法应用于 Pandas 数据框的元素,仅当这些元素是字符串时。
我想将 lambda 条件表达式与 apply 结合起来,但问题是当 apply 调用 Pandas 数据帧时,数据帧——如果我理解得很好——返回一个要应用的系列,然后将它传递给函数。我想知道如何更深入地调用 Pandas 数据框元素上的函数。
这就是我在对 DataFrame 的列(系列)调用 apply() 时按我的意图执行的操作:
df= pd.DataFrame([[1, 'a'],['b',2]], columns = ['A', 'B'] )
df['A'].apply(lambda x: str.upper(x) if type(x) is str else x)
Run Code Online (Sandbox Code Playgroud)
但是我怎么能用一行代码在整个数据帧上做到这一点呢?
我正在寻找一种解决方案,该解决方案可以处理包含数字和字符串的列,并且可以保持数字不变。
我正在学习 Python,更具体地说,我正在探索范围规则。
我尝试了以下“实验”:
def increment(n):
n += 1
print(n)
return n
n = 1
increment(n)
print(n)
Run Code Online (Sandbox Code Playgroud)
这段代码输出: 2 , 1 ,既然变量 n 返回到全局环境,难道不应该输出 2, 2 吗?
您的建议将不胜感激。