如何去除Pandas Series最大值结果中的列名前缀?
解决方案
问题出在你调用df.max()后得到的是Pandas Series对象,而非单个数值,所以针对字符串的操作(比如replace、removeprefix)无法直接生效——这些操作要么针对Series的值,要么没处理字符串的不可变性。
最简单的解决方式:直接对原Series求最大值
df_ls['gSpeed']本身就是一个Series,直接调用.max()会返回纯数值,不需要转成DataFrame:
max_speed = df_ls['gSpeed'].max() logger.info(f'Max speed {max_speed}')
如果必须使用DataFrame的场景
如果因为某些原因需要保留df_speed这个DataFrame,你可以通过以下方式提取纯数值:
- 使用
.iloc[0]提取Series的第一个元素:
df_speed = pd.DataFrame(df_ls['gSpeed']) max_speed = df_speed.max().iloc[0] logger.info(f'Max speed {max_speed}')
- 使用
.values[0]直接获取底层数组的第一个元素:
max_speed = df_speed.max().values[0]
- 使用
.item()将单个元素的Series转换为标量:
max_speed = df_speed.max().item()
为什么你之前的方法无效?
max_speed.replace('gSpeed',''):replace是用来替换Series值的方法,而gSpeed是Series的索引名,不是值,所以该操作不会改变任何内容。temp_speed.removeprefix('gSpeed'):字符串是不可变类型,removeprefix会返回新字符串,但你没有重新赋值给temp_speed,原变量仍为初始字符串。即便赋值了,这种字符串处理也属于绕弯路,远不如直接提取数值高效。
内容的提问来源于stack exchange,提问作者Kapil
相关产品推荐
相关产品推荐

