Pandas 跨行的最小值和最大值

Posted

技术标签:

【中文标题】Pandas 跨行的最小值和最大值【英文标题】:Pandas Min and Max Across Rows 【发布时间】:2021-04-03 18:57:23 【问题描述】:

我有一个如下所示的数据框。我想获得每个城市的最小值和最大值,以及关于该城市订购了哪些产品的最小值和最大值的信息。请帮忙。

数据框

【问题讨论】:

您可以发布原始数据而不是图像。请问到目前为止你有什么尝试? 很抱歉。我应该发布原始数据。我很快就会这样做,但基本上我想要一个数据框作为输出,其中每一行都有城市、产品、订购的最小/最大数量的详细信息。我希望这是有道理的。 【参考方案1】:
db.min(axis=0) - min value for each column
db.min(axis=1) - min value for each row 

【讨论】:

谢谢,它确实给出了最小值和最大值,但我认为它不会将有关行标题和列标题的信息放在一起。【参考方案2】:

使用 Dataframe.min 和 Datafram.max

DataFrame.min(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
DataFrame.max(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
matrix = [(22, 16, 23),
          (33, 50, 11),
          (44, 34, 11),
          (55, 35, 60),
          (66, 36, 13)
          ]
dfObj = pd.DataFrame(matrix, index=list('abcde'), columns=list('xyz'))
    x     y     z
a  22  16.0  23.0
b  33   50  11.0
c  44  34.0  11.0
d  55  35.0   60
e  66  36.0  13.0

获取包含每行最小值的序列

minValuesObj = dfObj.min(axis=1)
print('minimum value in each row : ')
print(minValuesObj)

输出

minimum value in each row : 
a    16.0
b    11.0
c    11.0
d    35.0
e    13.0
dtype: float64

【讨论】:

感谢您的回复,但我能否得到一个返回数据帧,其输出为 x a 22 为最小值,x e 66 为最大值【参考方案3】:

MMT Marathi,根据 Danil 和 Sutharp777 提供的答案,您应该能够得到答案。但是,我看到您对他们有疑问。不确定您是否正在寻找每行具有最小值/最大值的列。

这是包含解决方案的完整数据框。我只是在整理他们已经给出的答案

import pandas as pd
d = [['20in Monitor',2,2,1,2,2,2,2,2,2],
     ['27in 4k Gaming Monitor',2,1,2,2,1,2,2,2,2],
     ['27in FHD Monitor',2,2,2,2,2,2,2,2,2],
     ['34in Ultrawide Monitor',2,1,2,2,2,2,2,2,2],
     ['AA Batteries (4-pack)',5,5,6,7,6,6,6,6,5],
     ['AAA Batteries (4-pack)',7,7,8,8,9,7,8,9,7],
     ['Apple Airpods Headphones',2,2,3,2,2,2,2,2,2],
     ['Bose SoundSport Headphones',2,2,2,2,3,2,2,3,2],
     ['Flatscreen TV',2,1,2,2,2,2,2,2,2]]
c = ['Product','Atlanta','Austin','Boston','Dallas','Los Angeles',
     'New York City','Portland','San Francisco','Seattle']
df = pd.DataFrame(d,columns=c)
df['min_value'] = df.min(axis=1)
df['max_value'] = df.max(axis=1)
print (df)

这个输出将是:

                      Product  Atlanta  Austin  ...  Seattle  min_value  max_value
0                20in Monitor        2       2  ...        2          1          2
1      27in 4k Gaming Monitor        2       1  ...        2          1          2
2            27in FHD Monitor        2       2  ...        2          2          2
3      34in Ultrawide Monitor        2       1  ...        2          1          2
4       AA Batteries (4-pack)        5       5  ...        5          5          7
5      AAA Batteries (4-pack)        7       7  ...        7          7          9
6    Apple Airpods Headphones        2       2  ...        2          2          3
7  Bose SoundSport Headphones        2       2  ...        2          2          3
8               Flatscreen TV        2       1  ...        2          1          2

如果你想要每列的最小值和最大值,那么你可以这样做:

print ('min of each column :', df.min(axis=0).to_list()[1:])
print ('max of each column :', df.max(axis=0).to_list()[1:])

这会给你:

min of each column : [2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2]
max of each column : [7, 7, 8, 8, 9, 7, 8, 9, 7, 7, 9]

【讨论】:

以上是关于Pandas 跨行的最小值和最大值的主要内容,如果未能解决你的问题,请参考以下文章

在 Pandas、Python 中查找具有相同第一列的所有行的最小值、最大值、平均值

pandas学习(常用数学统计方法总结读取或保存数据缺省值和异常值处理)

Python利用pandas获取每行最大值和最小值

Python利用pandas获取每行最大值和最小值

Python利用pandas获取每行最大值和最小值

在训练数据上使用 MinMaxScaler 以生成用于测试数据的标准、最小值和最大值