我正在学习Python,我试图理解apply()方法在Pandas数据帧中是如何工作的。
作为练习,我想使用一行代码对Pandas dataframe的元素应用str.upper()方法,前提是这些元素是字符串。
我想将lambda条件表达式与apply结合使用,但问题是,当apply调用Pandas dataframe时,dataframe --如果我理解得很好的话--返回一个要应用的Series,然后将其传递给函数。我想知道如何才能更深入,并在Pandas数据帧的元素上调用函数。
这就是我在DataFrame (a Series)的一个列上调用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)但是我怎么能用一行代码在整个数据帧上做到这一点呢?
我正在寻找一个解决方案,将与包含数字和字符串的列一起工作,并将数字保持不变。
发布于 2017-01-22 06:25:43
你的一句话
df.applymap(lambda x: x.upper() if isinstance(x, str) else x)
A B
0 1 A
1 B 2https://stackoverflow.com/questions/41785095
复制相似问题