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

2024-01-04 13:44:14 浏览数 (1)

大家好,我是皮皮。

一、前言

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

下面是他的两行代码:

代码语言:javascript复制
df = df.assign(比例=lambda x:x.回复/(x.点击 x.回复))
df['比例'] = df['比例'].apply(lambda x:'{:.2%}'.format(x))

上面这个写法是把数字转换成字符串了,字符串可以比较大小,是按照从左向右挨个位置比较的,"17"<"2",因为2比1大。

二、实现过程

后来【瑜亮老师】也给了一个提示如下:因为你的百分比这一列是文本格式的。首先的话需要进行数据类型转换,现在先转为flaot型的。

这里【瑜亮老师】给了一个代码如下:

代码语言:javascript复制
df['比例'] = df['回复']/(df['点击'] df['回复'])
max1 = df[df.比例 == df.比例.max()]
max1['比例'] = max1['比例'].apply(lambda x: '{:.2%}'.format(x))
print(max1)

先取最大值所在的行,然后在转换格式展示数据。结果最大是这个23%,可以满足预期的要求。顺利地解决了粉丝的问题。下一篇文章,一起来看看另外一个解决思路。

三、总结

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

最后感谢粉丝【上海新年人】提出的问题,感谢【瑜亮老师】给出的思路,感谢【莫生气】、【冯诚】等人参与学习交流。

0 人点赞