Python在DataFrame中应用函数

时间:2017-10-20 18:33:01

标签: python pandas dataframe apply

Function = sqrt( AB x BA )  

  A B C D    
A 1 2 3 4  
B 1 2 3 4  
C 1 2 3 4   
D 1 2 3 4

AB = 2 

BA = 1

sqrt(2 x 1)

将其应用于dataframe中的所有单元格

3 个答案:

答案 0 :(得分:1)

如果您正在寻找一个函数来从给定的行和列中获取sqrt,您可以使用

def sqrt(a,b):
    return math.sqrt(df.loc[a[0],a[1]]*df.loc[b[0],b[1]])

sqrt('AB','BC')

2.449489742783178

答案 1 :(得分:0)

您可以使用applymap

In [11]: df.applymap(np.sqrt)
Out[11]:
     A         B         C    D
A  1.0  1.414214  1.732051  2.0
B  1.0  1.414214  1.732051  2.0
C  1.0  1.414214  1.732051  2.0
D  1.0  1.414214  1.732051  2.0

答案 2 :(得分:0)

对于这样的给定输入:

l = pd.DataFrame([[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]])

你可以这样做:

for i,v in l.iterrows():
     for j in range(len(v)):
        l[i][j] = math.sqrt(l[i][j]*l[j][i])
在pandas中更好的方法是:

for i in l.columns.values:
     for j in l.index:
        l.loc[i, j] = math.sqrt(l.loc[i, j]*l.loc[j, i])

输出:

>>> l
          0         1         2         3
0  1.000000  1.414214  1.732051  2.000000
1  1.189207  2.000000  2.449490  2.828427
2  1.316074  2.213364  3.000000  3.464102
3  1.414214  2.378414  3.223710  4.000000