pandas列中的min()函数

3

I have a dataframe like the following (df1):

 col1 val
0  A  AX
1  A  2
2  A  11
3  A  13
4  A  BX
5  A  20

我想选择值最小的行。因此我写了以下代码:

df2 = df1.groupby(['col1'])['val'].min()

这是我得到的输出结果,
col1
A 11
Name: Level, dtype: object

看起来AX、BX这些值导致它将其读取为对象。因此,它会将“11”作为最小值进行排序和查找。如何修改它,使其可以进行数字排序并输出?

A 2

Thanks in advance.

1个回答

3

首先,您需要将列转换为数字格式,因为 min 函数适用于字符串类型的最小值,其返回具有最低 ASCII 值的字符:

df2 = pd.to_numeric(df1['val'], errors='coerce').groupby(df1['col1']).min().astype(int)
print (df2)
col1
A    2
Name: val, dtype: int32

有关字符串中 min 的更多信息,请参见此处


你添加的链接是针对Python 2的,并适用于混合类型比较。我猜测OP的列都是字符串。 - cs95
@cᴏʟᴅsᴘᴇᴇᴅ - 是的,我尝试找到更好的链接。 - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接