我正在学习Python,并尝试理解Pandas数据框中apply()方法的工作原理。
作为练习,我想使用一行代码仅对Pandas数据框中的字符串元素应用str.upper()方法。
我考虑将lambda条件表达式与apply相结合,但问题在于当apply调用Pandas数据框时,数据框返回一个Series给apply,然后再将其传递给函数。我想知道如何更深入地调用Pandas数据框的元素并对其进行处理。
当apply()调用DataFrame(Series)的列时,这是我实现意图的方式:
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)
但是我怎样才能用一行代码对整个数据框进行操作呢?
我正在寻找一种解决方案,可以处理同时包含数字和字符串的列,并保留数字不变。
df.applymap()
,但是它非常慢 - 所以请小心。 - MaxU - stand with Ukrainelambda x: x.upper() if isinstance(x, basestring) else x
。 - the_constant