在Pandas数据框中应用函数

11

我是pandas dataframe的新手,想要对每一列应用一个函数,使得它计算每个元素x除以该列的最大值。

我参考了这个问题,但是我很难访问每一列的最大值。提前致谢。 Pandas DataFrame: apply function to all columns

输入:

      A  B  C  D
   0  8  3  5  8
   1  9  4  0  4
   2  5  4  3  8
   3  4  8  5  1

输出:

      A     B     C    D
   0  8/9  3/8  5/5  8/8
   1  9/9  4/8  0/5  4/8
   2  5/9  4/8  3/5  8/8
   3  4/9  8/8  5/5  1/8

“0.888…” 足够吗?还是你真的需要分数 8/9?” - DSM
哦,是的,0.888会很好。这是为了展示操作而设计的。对于造成的困惑,我很抱歉。 - msunbot
1个回答

14

这样做应该可以:

>>> from pandas import DataFrame
>>> 
>>> df = DataFrame({"A": [8,9,5,4], "B": [3,4,4,8], "C": [5,0,3,5], "D": [8,4,8,1]})
>>> df.max()
A    9
B    8
C    5
D    8
>>> (df * 1.0)/df.max()
          A      B    C      D
0  0.888889  0.375  1.0  1.000
1  1.000000  0.500  0.0  0.500
2  0.555556  0.500  0.6  1.000
3  0.444444  1.000  1.0  0.125
请注意,我将 df 乘以 1.0 ,这样它就不再由 int 组成了( .astype(float)也可以),以避免整数除法和结果DataFrame中全是0和1的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接