从具有最低值的熊猫列中选择值
Posted
技术标签:
【中文标题】从具有最低值的熊猫列中选择值【英文标题】:Choosing values from pandas column with the lowest value 【发布时间】:2021-12-05 09:03:53 【问题描述】:我正在从 csv 读取 df,其中有 2 列显示各种项目的价格。在某些情况下,价格是单个 int/float,但在其他情况下,它可能是一系列空格分隔的 int/floats 或 int/floats 与字符串的混合。
示例 df:
item prices
------ ---------------------------
a 2
b 3.5
c 5
d 0.04
e 1 8 3 4 2
f 0.04 0.04 0.01
g Normal: 4.56Premium: 4.75
我正在寻找的是一种很好的 Python 方法,可以让价格列显示每个项目的最低可能 int/float 值。例如
item prices
------ --------
a 2
b 3.5
c 5
d 0.04
e 1
f 0.01
g 4.56
我能想到解决项目 e 和 f 的这个问题的唯一方法是使用 str.split(" ")
拆分值并将输出映射到 int 或 float,但这似乎会很混乱,因为并非所有值是相同的类型。而且我什至不知道如何获得项目 g 的最低值。
任何帮助将不胜感激
【问题讨论】:
【参考方案1】:使用Series.str.extractall
获取integer
s 或float
s,转换为浮点数并获取最小值:
df['prices'] = (df['prices'].str.extractall('(\d+\.\d+|\d+)')[0]
.astype(float)
.groupby(level=0)
.min())
print (df)
item prices
0 a 2.00
1 b 3.50
2 c 5.00
3 d 0.04
4 e 1.00
5 f 0.01
6 g 4.56
【讨论】:
没有这部分也可以工作[0].astype(float)
。你能告诉你为什么要特别添加[0]
部分。
@MuhammadHassan - 当然,如果使用[0]
,则返回系列,否则返回一列DataFrame
。在这里没关系。以上是关于从具有最低值的熊猫列中选择值的主要内容,如果未能解决你的问题,请参考以下文章