gpt4 book ai didi

Python pandas dataframe 仅使用行信息而不是列 max min 标准化每一行

转载 作者:行者123 更新时间:2023-12-01 01:20:22 26 4
gpt4 key购买 nike

我的数据框当前包含以下设计

来源:

index   col1 col2   col3
row1 100 50 0
row2 -100 50 -25
row3 0 0 0
row4 -1 -1 -1
row5 1 1 1
row6 -100 0 1

我的目标是

index   col1    col2    col3
row1 1.0 0.5 0.0
row2 0 1 0.5
row3 0 0 0
row4 0 0 0
row5 0 0 0
row6 0 0.99 1

我从 Stackoverflow 的答案中尝试了什么:

标准化列最大值而不是行最大值/最小值

df = (df.T / df.T.sum()).T

标准化列最大值而不是行最大值/最小值

df = df.div(df.sum(axis=1), axis=0)

标准化列最大值而不是行最大值/最小值

df.iloc[:,:] = Normalizer(norm='l2').fit_transform(df)

我确实尝试过改变:df.div(df.sum(axis=1), axis=0) 并使用轴,不幸的是,一旦我更改任何轴,它就会抛出错误。

通过阅读内置函数的 pandas 数据框,我看不到任何 Pythonic 和简单的实现方式,而无需在应用上存储每行之前的最小最大值的复杂 lambda 函数。Pandas 还说我们不应该迭代行并更改值:-( 所以我有点迷失并欣赏一些输入。

最佳答案

  1. 从每行中减去最小的元素。
  2. 将该行除以其范围(最大值和最小值之间的差值)。
  3. 如果范围为 0,则除法将产生 NaN。用原始值填充它们。

代码:

df.subtract(df.min(axis=1), axis=0)\
.divide(df.max(axis=1) - df.min(axis=1), axis=0)\
.combine_first(df)
# col1 col2 col3
#row1 1.0 0.500000 0.0
#row2 0.0 1.000000 0.5
#row3 0.0 0.000000 0.0
#row4 -1.0 -1.000000 -1.0
#row5 1.0 1.000000 1.0
#row6 0.0 0.990099 1.0

关于Python pandas dataframe 仅使用行信息而不是列 max min 标准化每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com