gpt4 book ai didi

python - 规范化 Pandas 数据框的行

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:15 25 4
gpt4 key购买 nike

我需要规范化数据框的行,其中包含填充为全零的行。例如:

df= pd.DataFrame({"ID": ['1', '2', '3', '4'], "A": [1, 0, 10, 0], "B": [4, 0, 30, 0]})

ID A B
1 1 4
2 0 0
3 10 30
4 0 0

我的方法是首先排除零值行,然后使用以下方法规范化非零子集:

df1 = df[df.sum(axis=1) != 0]
df2 = df[df.sum(axis=1) == 0]
sum_row = df1.sum(axis=1)
df1.div(sum_row, axis=0)

然后按如下方式连接两个数据帧:

pd.concat([df1, df2]).reset_index()

但是,我在应用 df1.div(sum_row, axis=0)

时遇到了以下错误

ValueError: operands could not be broadcast together with shapes (6,) (2,)

我想知道如何修复该错误以及是否存在更有效的方法。谢谢!

编辑:生成的数据框预计如下所示:

ID  A     B
1 0.2 0.8
2 0 0
3 0.25 0.75
4 0 0

最佳答案

您可以使用 Normalizer in scikit-learn

df= pd.DataFrame({"ID": ['1', '2', '3', '4'], "A": [1, 0, 10, 0], "B": [4, 0, 30, 0]})
df = df.set_index('ID')

from sklearn.preprocessing import Normalizer
df.iloc[:,:] = Normalizer(norm='l1').fit_transform(df)

print(df)

A B
ID
1 0.20 0.80
2 0.00 0.00
3 0.25 0.75
4 0.00 0.00

关于python - 规范化 Pandas 数据框的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52007165/

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