gpt4 book ai didi

python - 在优雅地处理字符串列的同时找到所有列的范围(最大值和最小值之间的差异)

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

我有一个场景,我必须找到数据集中所有列的范围,该数据集包含多个具有数值的列,但一列具有字符串值。请从下面的我的数据集中找到示例记录:

import seaborn as sns
iris = sns.load_dataset('iris')

sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

这些列的最大值和最小值由下式给出

sepal_length          7.9
sepal_width 4.4
petal_length 6.9
petal_width 2.5
species virginica
dtype: object

sepal_length       4.3
sepal_width 2
petal_length 1
petal_width 0.1
species setosa
dtype: object

……分别。要查找所有列的范围,我可以使用以下代码:

iris.max() - iris.min()

但是由于“species”列有字符串值,上面的代码会抛出以下错误:

TypeError: unsupported operand type(s) for -: 'str' and 'str'

如果出现上面的错误,我想把值打印成

"{max string value}" - "{min string value}"

IOW,我的预期输出是这样的:

sepal_length                   3.6
sepal_width 2.4
petal_length 5.9
petal_width 2.4
species virginica - setosa

我该如何解决这个问题?

最佳答案

分别处理数字和字符串列。您可以使用 df.select_dtypes 选择这些。最后,concat 结果。

u = Iris.select_dtypes(include=[np.number])
# U = u.apply(np.ptp, axis=0)
U = u.max() - u.min()

v = Iris.select_dtypes(include=[object])
V = v.max() + ' - ' + v.min()

U.append(V)

sepal_length 3.6
sepal_width 2.4
petal_length 5.9
petal_width 2.4
species virginica - setosa
dtype: object

关于python - 在优雅地处理字符串列的同时找到所有列的范围(最大值和最小值之间的差异),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53923282/

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