pandas列

时间:2018-01-23 11:21:43

标签: python-3.x pandas pandas-groupby

我有一个类似以下的数据框(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

提前致谢。

1 个答案:

答案 0 :(得分:3)

首先需要将列转换为数字,因为min使用字符串nice并返回具有最低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的更多信息,请here