使用Pandas apply()方法返回多列数据
传递给pandas.apply()的对象是系列对象,其索引是DataFrame的索引(axis=0)或DataFrame的列(axis=1)。默认情况下(result_type=None),最终的返回类型是由应用函数的返回类型推断出来的。否则,它取决于 result_type 参数。
语法:
s.apply(func, convert_dtype=True, args=())
使用apply()方法创建Dataframe以返回多个列
# Importing required Libraries
import pandas
import numpy
# Creating dataframe
dataFrame = pandas.DataFrame
([[4, 9], ] * 3, columns =['A', 'B'])
display(dataFrame)
输出:
下面是一些描述pandas.DataFrame.apply()的使用的程序
示例 1:
使用Numpy的通用函数(在这种情况下与numpy.sqrt()相同)。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(numpy.sqrt)
输出:
returning multiple columns from Pandas apply()
A B
0 2.0 3.0
1 2.0 3.0
2 2.0 3.0
示例 2:
在列上使用还原函数。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(numpy.sum, axis = 0)
输出:
returning multiple columns from Pandas apply()
A 12
B 27
dtype: int64
示例 3:
在行上使用还原函数。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(numpy.sum, axis = 1)
输出:
returning multiple columns from Pandas apply()
0 13
1 13
2 13
dtype: int64
示例 4:
返回一个类似于列表的东西将导致一个使用lambda函数的系列。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(lambda x: [1, 2], axis = 1)
输出:
returning multiple columns from Pandas apply()
0 [1, 2]
1 [1, 2]
2 [1, 2]
dtype: object
示例 5:
传递result_type=’expand’将把列表式的结果扩展到Dataframe的列。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(lambda x: [1, 2], axis = 1, result_type ='expand')
输出:
returning multiple columns from Pandas apply()
0 1
0 1 2
1 1 2
2 1 2
示例 6:
在函数中返回一个系列,类似于传递 result_type=’expand’。结果的列名将是系列的索引。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(lambda x: pandas.Series(
[1, 2], index =['foo', 'bar']), axis = 1)
输出:
returning multiple columns from Pandas apply()
foo bar
0 1 2
1 1 2
2 1 2
示例 7:
传递result_type=’broadcast’将确保同一形状的结果,无论是列表还是标量都由函数返回,并沿axis线广播。结果的列名将是原来的。
# Using pandas.DataFrame.apply() on the data frame
print('returning multiple columns from Pandas apply()')
dataFrame.apply(lambda x: [1, 2], axis = 1, result_type ='broadcast')
输出:
returning multiple columns from Pandas apply()
A B
0 1 2
1 1 2
2 1 2
极客教程