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 中查找具有相同第一列的所有行的最小值、最大值、平均值