Python Pandas Series.apply()

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()函数将城市名称改为’Montreal’,如果城市是’Rio’。

# 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()函数已经成功地返回了给定系列对象的numpy数组表示。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Pandas Series