Pandas函数应用|表格函数,行或列函数,元素函数

发表时间:2020-01-13

要将自定义或其他库的函数应用于Pandas对象,有三个重要的方法,下面来讨论如何使用这些方法。使用适当的方法取决于函数是否期望在整个DataFrame,行或列或元素上进行操作。

  • 表格函数应用:pipe()
  • 行或列函数应用:apply()
  • 元素函数应用:applymap()


表格函数应用

可以通过将函数和适当数量的参数作为管道参数来执行自定义操作。 因此,对整个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)

执行上面示例代码,得到以下结果 -

Snipaste_2020-01-13_20-19-01.png


行或列合理函数应用

可以使用apply()方法沿DataFramePanel的轴应用任意函数,它与描述性统计方法一样,采用可选的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)
print (df)

执行上面示例代码,得到以下结果 -

Snipaste_2020-01-13_20-19-35.png

通过传递axis参数,可以在行上执行操作。

示例-2

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)

执行上面示例代码,得到以下结果 -

Snipaste_2020-01-13_20-20-06.png

示例-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)

执行上面示例代码,得到以下结果 -

Snipaste_2020-01-13_20-20-31.png


元素合理函数应用

并不是所有的函数都可以向量化(也不是返回另一个数组的NumPy数组,也不是任何值),在DataFrame上的方法applymap()和类似于在Series上的map()接受任何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)

执行上面示例代码,得到以下结果 -

Snipaste_2020-01-13_20-21-23.png

示例-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)

执行上面示例代码,得到以下结果 -

Snipaste_2020-01-13_20-21-58.png


Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free