Pandas 函数应用,要将自定义或其他库的函数应用于Pandas对象,有三个重要的方法,下面来讨论如何使用这些方法。
使用适当的方法取决于函数是否期望在整个DataFrame
行或列或元素上进行操作。
类型 | 函数 | 说明 |
---|---|---|
表式函数应用 | pipe() |
可以通过将函数和适当数量的参数作为管道参数来执行自定义操作,从而对整个DataFrame 执行操作。 |
行列函数应用 | apply() |
沿DataFrame 或Panel 的轴应用任意函数,它与描述性统计方法一样,apply()方法使用一个可选的axis参数。 |
元素函数应用 | applymap() |
和Series上的map() 类似,接受任何Python 函数,该函数要求能够接受单个值并返回单个值。 |
表式函数应用
可以通过将函数和适当数量的参数作为管道参数来执行自定义操作,从而对整个DataFrame
执行操作。
例如,为DataFrame
中的所有元素加上一个值2
。
adder 函数
adder
函数将两个数值作为参数相加并返回总和。
def adder(ele1,ele2):
return ele1+ele2
我们现在将使用自定义函数在DataFrame
上执行操作
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
参考示例代码如下:
import pandas as pd
import numpy as np
def adder(ele1,ele2):
return ele1+ele2
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
print (df)
执行结果如下:
行或列函数应用
可以使用apply()
方法沿DataFrame
或Panel
的轴应用任意函数,它与描述性统计方法一样,apply()
方法使用一个可选的axis
参数。
默认情况下,操作按列执行,该操作按列执行,将每一列作为类似数组的列。
示例1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean)
print (df)
执行结果如下:
示例2:通过传递axis
参数,可以在行上执行操作。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean,axis=1)
print (df)
执行结果如下:
示例3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(lambda x: x.max() - x.min())
print (df)
执行结果如下:
col1 col2 col3
0 -0.243943 -0.751319 -1.255694
1 -0.335897 -1.012726 -1.392696
2 -0.707799 -0.156924 0.194075
3 1.040613 -0.436822 1.045816
4 0.171972 0.606404 -1.982560
元素函数应用
并不是所有的函数都可以向量化(既不返回另一个数组也不返回任何值的NumPy数组),在DataFrame
上的方法applymap()
和Series上的map()
类似,接受任何Python函数,该python函数要求能够接受单个值并返回单个值。
示例1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
# My custom function
df['col1'].map(lambda x:x*100)
print (df)
执行结果如下:
col1 col2 col3
0 -0.700311 -0.800143 -1.056121
1 1.129104 -0.339303 -0.956953
2 -0.032603 0.478423 0.100833
3 -0.517502 0.036195 -0.310516
4 0.634135 0.024519 -1.295711
示例2
import pandas as pd
import numpy as np
# My custom function
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.applymap(lambda x:x*100)
print (df)
执行结果如下:
col1 col2 col3
0 -1.043203 -1.996480 0.058107
1 -1.298987 0.446834 0.394456
2 -1.585770 1.156161 -1.216770
3 -1.083919 -1.492321 0.966901
4 0.059858 -0.554857 0.464283
评论前必须登录!
注册