编写一个Python程序,生成一个包含30个元素的随机数组(元素值从1到100),并计算数据框中每一行的最大值与最小值的比值。
生成数据框每一行最大值与最小值比值的结果是
0 43.000000 1 1.911111 2 2.405405 3 20.000000 4 7.727273 5 6.333333
为了解决这个问题,我们将遵循以下步骤:
方案一
定义一个包含30个从1到100的随机元素的数据框,并将数组重塑为(6,5)以转换为二维数组。
df = pd.DataFrame(np.random.randint(1,100,30).reshape(6,5))
在lambda方法内创建df.apply函数来计算np.max(x)/np.min(x),其中axis为1,并将其保存为max_of_min。其定义如下:
max_of_min = df.apply(lambda x: np.max(x)/np.min(x), axis=1)
最后打印max_of_min
示例
让我们检查下面的代码来更好地理解:
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(1,100,30).reshape(6,5)) print("Dataframe is:\n",df) max_of_min = df.apply(lambda x: np.max(x)/np.min(x), axis=1) print("maximum by minimum of each row:\n",max_of_min)
输出
Dataframe is: 0 1 2 3 4 0 2 13 4 15 86 1 60 53 86 75 45 2 37 85 40 89 88 3 67 33 80 4 74 4 85 71 11 67 81 5 56 85 95 15 94 maximum by minimum of each row: 0 43.000000 1 1.911111 2 2.405405 3 20.000000 4 7.727273 5 6.333333 dtype: float64
广告