在Pandas中,map、applymap和apply方法的区别

704

你能告诉我何时使用这些矢量化方法以及基本示例吗?

我看到map是一个Series方法,而其他方法都是DataFrame方法。不过,我对applyapplymap方法感到困惑。为什么我们有两种方法可以将函数应用于DataFrame?同样,提供说明用法的简单示例将非常有帮助!


14
请纠正我,但我认为这些函数不是向量化方法,因为它们都涉及对应用于的元素进行循环。 - Tanguy
1
我在这里看不出任何区别:https://gist.github.com/MartinThoma/e320cbb937afb4ff766f75988f1c65e6 - Martin Thoma
Marillion,我在下面的回答中提供了非常简化和简单的示例。希望能有所帮助! - mikelowry
我应该将“DataFrame.pipe()”方法添加到比较中吗? - Say OL
12个回答

2
FOMO:
下面的例子展示了如何在一个DataFrame上应用applyapplymapmap函数只能在Series上使用,不能在DataFrame上使用。
需要记住的是,apply 可以做 applymap 可以做的任何事情,但是 apply额外的选项。
X因素选项包括:axisresult_type,其中 result_type 只在 axis=1(针对列)时才起作用。
df = DataFrame(1, columns=list('abc'),
                  index=list('1234'))
print(df)

f = lambda x: np.log(x)
print(df.applymap(f)) # apply to the whole dataframe
print(np.log(df)) # applied to the whole dataframe
print(df.applymap(np.sum)) # reducing can be applied for rows only

# apply can take different options (vs. applymap cannot)
print(df.apply(f)) # same as applymap
print(df.apply(sum, axis=1))  # reducing example
print(df.apply(np.log, axis=1)) # cannot reduce
print(df.apply(lambda x: [1, 2, 3], axis=1, result_type='expand')) # expand result

作为附注,Series map 函数不应与 Python 的 map 函数混淆。
第一个应用于 Series,用于映射值,第二个应用于可迭代对象的每个项。
最后,请不要混淆数据框的 apply 方法和 groupby 的 apply 方法。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接