Pandas针对某列的百分数取最大值无效?(下篇)

2024-01-11 14:23:14 浏览数 (2)

十年离乱后,长大一相逢。

大家好,我是皮皮。

一、前言

前几天在Python白银交流群【上海新年人】问了一个Pandas数据提取的问题,问题如下:大佬们,我发现个问题,请教一下,我把某一列譬如0.001什么的,转化了1%以后再对某列做print(df[df.点击 == df['点击'].max()],最大值 明明有15%的却显示不出来,只显示出来10%以下的,是什么原因啊?

上一篇文章中【瑜亮老师】先取最大值所在的行,然后在转换格式展示数据。这个思路顺利地解决了粉丝的问题,这一篇文章我们一起来看看另外的一个解决思路。那如果这excel中已经有百分数了,怎么取最大数?

二、实现过程

后来【论草莓如何成为冻干莓】给了一个提示如下:一般来说在Excel可以设置格式为百分数,而不是添加字符串%符号,如果是后者,把字符串型的百分数转换成小数,再取最大值 这里【瑜亮老师】给了一个代码如下:

代码语言:javascript复制
df['比例'] = df['比例'].replace('%', '', regex=True).astype(float) / 100
max1 = df[df.比例 == df.比例.max()]
max1['比例'] = max1['比例'].apply(lambda x: '{:.2%}'.format(x))
print(max1)

先把%删除,然后文本类型的数字转换成float / 100,后面代码不变,结果可以满足预期的要求。顺利地解决了粉丝的问题。

粉丝提问:文本格式为什么7.81%这个值可以筛选出来呢?

答:文本比大小是按照从左向右挨个位置比较的,"7%">"23%",因为7比2大,后面的3根本不参与比较。

excel里面可以选择数值展示的样式,比如百分比、小数点后0位或几位、数字前面是否有¥$€等等。负数是否展示-号,负数的颜色等等等,日期还有长短类型,是否展示时间,星期等。其实这些单元格里面保存的都是数字而已,只是展示的样式不同。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据提取的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

0 人点赞