当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas Series.apply()用法及代码示例


Pandas 系列是带有轴标签的一维ndarray。标签不必是唯一的,但必须是可哈希的类型。该对象同时支持基于整数和基于标签的索引,并提供了许多方法来执行涉及索引的操作。

Pandas Series.apply()函数在给定系列对象的每个元素上调用传递的函数。

用法: Series.apply(func, convert_dtype=True, args=(), **kwds)

参数:
func:适用Python函数或NumPy ufunc。
convert_dtype:尝试找到更好的dtype以获得逐元素函数结果。
args:在系列值之后将位置参数传递给func。
** kwds:传递给func的其他关键字参数。

返回:系列

范例1:采用Series.apply()如果城市是“里约”,则可以将城市名称更改为“蒙特利尔”。

# importing pandas as pd 
import pandas as pd 
  
# Creating the Series 
sr = pd.Series(['New York', 'Chicago', 'Toronto', 'Lisbon', 'Rio']) 
  
# Create the Index 
index_ = ['City 1', 'City 2', 'City 3', 'City 4', 'City 5']  
  
# set the index 
sr.index = index_ 
  
# Print the series 
print(sr)

输出:

City 1    New York
City 2     Chicago
City 3     Toronto
City 4      Lisbon
City 5         Rio
dtype:object

现在我们将使用Series.apply()如果城市是“里约”,则可以将城市名称更改为“蒙特利尔”。

# change 'Rio' to 'Montreal' 
# we have used a lambda function 
result = sr.apply(lambda x:'Montreal' if x =='Rio' else x ) 
  
# Print the result 
print(result)

输出:

City 1    New York
City 2     Chicago
City 3     Toronto
City 4      Lisbon
City 5    Montreal
dtype:object

正如我们在输出中看到的,Series.apply()函数已成功将城市名称更改为“蒙特利尔”。

范例2:采用Series.apply()如果给定系列对象中的值大于30,则函数返回True,否则返回False。

# importing pandas as pd 
import pandas as pd 
  
# Creating the Series 
sr = pd.Series([11, 21, 8, 18, 65, 18, 32, 10, 5, 32, None]) 
  
# Create the Index 
# apply yearly frequency 
index_ = pd.date_range('2010-10-09 08:45', periods = 11, freq ='Y') 
  
# set the index 
sr.index = index_ 
  
# Print the series 
print(sr)

输出:

2010-12-31 08:45:00    11.0
2011-12-31 08:45:00    21.0
2012-12-31 08:45:00     8.0
2013-12-31 08:45:00    18.0
2014-12-31 08:45:00    65.0
2015-12-31 08:45:00    18.0
2016-12-31 08:45:00    32.0
2017-12-31 08:45:00    10.0
2018-12-31 08:45:00     5.0
2019-12-31 08:45:00    32.0
2020-12-31 08:45:00     NaN
Freq:A-DEC, dtype:float64

现在我们将使用Series.apply()如果给定系列对象中的值大于30,则函数返回True,否则返回False。

# return True if greater than 30 
# else return False 
result = sr.apply(lambda x:True if x>30 else False) 
  
# Print the result 
print(result)

输出:

2010-12-31 08:45:00    False
2011-12-31 08:45:00    False
2012-12-31 08:45:00    False
2013-12-31 08:45:00    False
2014-12-31 08:45:00     True
2015-12-31 08:45:00    False
2016-12-31 08:45:00     True
2017-12-31 08:45:00    False
2018-12-31 08:45:00    False
2019-12-31 08:45:00     True
2020-12-31 08:45:00    False
Freq:A-DEC, dtype:bool

正如我们在输出中看到的,Series.apply()函数已成功返回给定series对象的numpy数组表示形式。



相关用法


注:本文由纯净天空筛选整理自Shubham__Ranjan大神的英文原创作品 Python | Pandas Series.apply()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。