多列数据帧的单个值的规范化
Normalization of individual values of multicolumn dataframe
我有一个包含 100 列 x 72 原始数据的数据框。
df_3
0 1 2
first_point 458.69 457.71 420.82
max_point 3654.07 8134.25 7520.39
0 458.69 457.71 420.82
1 437.92 339.23 287.35
2 443.19 303.66 314.83
3 416.03 315.33 317.84
4 406.89 306.29 328.26
5 419.13 334.01 325.01
对于从 0、1、2、3 开始的每一列...我想创建两个变量(nom 和 den)
(for col0, row0) df_3[0][0] nom=458.69-first_point in col0 (458.69)
(for col0, row1) df_3[0][1] nom=437.92-first_point in col0 (458.69)
(for col0, row0) df_3[0][0] dem=max_point (3654.07)-first_point in col0 (458.69)
the dem remains the same whithin the same column
如何循环执行 nom 所需的操作,其中减去的点保持固定,同时迭代列的每一行上的值的减法?
之后我在 nom/dem
之间做除法
if dem !=0:
norm = (nom / dem)
else:
norm = 0
#we add the value to the final line
final_line.append(norm)
第 0 列的输出为:
0
0 0
1 -0.0065
2 -0.0048508
3 -0.0133505
4 -0.0162735
5 -0.0123804
如果我很了解你的问题,你可以简单地做:
for c in df.columns:
first_point = df[c].values[0]
max_point = max(df[c])
dem = max_point - first_point
if dem != 0:
df['norm_' + str(c)] = (df[c] - first_point) / dem
else:
df['norm_' + str(c)] = 0
但是我想知道您在解释中是否混淆了不同的东西。正如您在此处看到的,您的部门的提名人有一个取决于行的值,但分母是固定的。在测试分母是否等于 0 的情况下,如果 first_point == max_point.
,它会将整个列值设置为 0
我有一个包含 100 列 x 72 原始数据的数据框。
df_3
0 1 2
first_point 458.69 457.71 420.82
max_point 3654.07 8134.25 7520.39
0 458.69 457.71 420.82
1 437.92 339.23 287.35
2 443.19 303.66 314.83
3 416.03 315.33 317.84
4 406.89 306.29 328.26
5 419.13 334.01 325.01
对于从 0、1、2、3 开始的每一列...我想创建两个变量(nom 和 den)
(for col0, row0) df_3[0][0] nom=458.69-first_point in col0 (458.69)
(for col0, row1) df_3[0][1] nom=437.92-first_point in col0 (458.69)
(for col0, row0) df_3[0][0] dem=max_point (3654.07)-first_point in col0 (458.69)
the dem remains the same whithin the same column
如何循环执行 nom 所需的操作,其中减去的点保持固定,同时迭代列的每一行上的值的减法? 之后我在 nom/dem
之间做除法if dem !=0:
norm = (nom / dem)
else:
norm = 0
#we add the value to the final line
final_line.append(norm)
第 0 列的输出为:
0
0 0
1 -0.0065
2 -0.0048508
3 -0.0133505
4 -0.0162735
5 -0.0123804
如果我很了解你的问题,你可以简单地做:
for c in df.columns:
first_point = df[c].values[0]
max_point = max(df[c])
dem = max_point - first_point
if dem != 0:
df['norm_' + str(c)] = (df[c] - first_point) / dem
else:
df['norm_' + str(c)] = 0
但是我想知道您在解释中是否混淆了不同的东西。正如您在此处看到的,您的部门的提名人有一个取决于行的值,但分母是固定的。在测试分母是否等于 0 的情况下,如果 first_point == max_point.
,它会将整个列值设置为 0