如何在Pandas Dataframe中的多个列上执行(min,max)?

时间:2017-06-02 13:45:05

标签: python pandas pandas-groupby

我有以下DataFrame:

    preds        geoLong      geoLat
8      11     -78.949609   39.154228
9      11    -128.489609   38.154228
10     11      -48.48969   37.154228

我正在对一列(preds

进行分组
gbr = df.groupby(['preds'])

当我执行以下操作时,我从该列中得到了错误的结果:

gbr.agg({'geoLong': 'max'})

1 个答案:

答案 0 :(得分:2)

似乎你需要:

gbr.agg({'geoLong': 'max', 'geoLat':'min'})

但请先检查dtypes以查看列geoLonggeoLat是否为数字:

print (df.dtypes)
preds      object
geoLong    object
geoLat     object
dtype: object

如果有object s(显然string s),您需要解析它:

cols = ['geoLong','geoLat']
df[cols] = df[cols].astype(float)

如果由于数据错误而返回错误,请使用to_numeric将所有错误数据替换为NaN s:

  

ValueError:无法将字符串转换为float:'l'

cols = ['geoLong','geoLat']
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')