我正在学习Python,并尝试了解apply()方法在Pandas数据框中的工作方式。

作为练习,我只想使用一行代码将str.upper()方法应用于Pandas数据帧的元素,前提是这些元素是字符串。

我本来想将lambda条件表达式与apply组合在一起,但是问题是,当apply调用Pandas数据框时,该数据框(如果我很了解的话)会返回要应用的Series,然后将其传递给函数。我想知道如何进一步深入并在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)

但是,如何用一行代码在整个数据帧上做到这一点?

我正在寻找一种解决方案,该解决方案可用于同时包含数字和字符串的列,并使数字保持原样。

最佳答案

你的一线

df.applymap(lambda x: x.upper() if isinstance(x, str) else x)

   A  B
0  1  A
1  B  2

关于python - 有条件地在Pandas数据框中逐条应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41785095/

10-11 02:40
查看更多