- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个数据框,我想在其中显示某些值的百分比。我将它们计算为十进制值,然后应用格式字符串将它们转换为百分比。当数据框转换为百分比时,它无法正确地对百分比进行排序。
d = {'name': ['A', 'B', 'C', 'D', 'E'], 'percentage':[0.15, 0.65, 0.7, 0.3, 1]}
test_df = pd.DataFrame(data = d)
test_df
name percentage
0 A 0.15
1 B 0.65
2 C 0.70
3 D 0.30
4 E 1.00
使用 sort_values 函数对上述值进行排序时,我们收到:
test_df.sort_values('percentage')
name percentage
0 A 0.15
3 D 0.30
1 B 0.65
2 C 0.70
4 E 1.00
然后我将小数转换为百分比(这主要用于图表中的可视化目的)并尝试对其进行排序,这次升序,因为我的数据集有几百行,我只想显示前 10 行:
perc_sort = test_df
perc_sort['percentage'] = perc_sort['percentage'].astype(float).map("{:.2%}".format)
perc_sort.sort_values('percentage', ascending=False)
name percentage
2 C 70.00%
1 B 65.00%
3 D 30.00%
0 A 15.00%
4 E 100.00%
为什么 100% 在底部?我猜字符串有问题,可能是 0 出现在数字 1 之前。但是有没有办法对实际百分比进行排序?
最佳答案
您需要对整数进行排序,否则数字排序错误 - '100'
< 5
, 因为 '1'
< '5'
:
perc_sort.sort_values('percentage', ascending=False)
perc_sort['percentage'] = perc_sort['percentage'].astype(float).map("{:.2%}".format)
如果值已经是字符串,您可以创建由数字填充并按其排序的辅助列:
perc_sort = test_df.copy()
perc_sort['percentage'] = perc_sort['percentage'].astype(float).map("{:.2%}".format)
perc_sort['new'] = perc_sort['percentage'].str.strip('%').astype(float)
df = perc_sort.sort_values('new', ascending=False)
print(df)
name percentage new
4 E 100.00% 100.0
2 C 70.00% 70.0
1 B 65.00% 65.0
3 D 30.00% 30.0
0 A 15.00% 15.0
或使用
Series.argsort
与
[::-1]
用于降序排序值的索引并传递给
DataFrame.iloc
:
new = perc_sort['percentage'].str.strip('%').astype(float)
df = perc_sort.iloc[new.argsort()[::-1]]
print(df)
name percentage
4 E 100.00%
2 C 70.00%
1 B 65.00%
3 D 30.00%
0 A 15.00%
关于python - Pandas - sort_values 未正确排序转换后的浮点百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64385933/
我想知道这两段代码之间的区别是什么? New_Series = pd.Series(df['avg']).sort(axis=0, ascending=False,
我不知道我的代码有什么问题 import pandas as pd import numpy as np woe = [1.1147295474833758,0.364043491078754,-0.
我已经看到很多关于基于 pandas 列名称排序的建议,但我正在尝试基于列索引进行排序。 我已经包含了一些代码来演示我正在尝试做什么。 import pandas as pd df = pd.Data
我知道 sort_index() 可以让我按索引对 df 进行排序,但我想知道 sort_values() 是否也可以按索引排序(无需重置索引)? 最佳答案 不,如果不先将索引转换为列(可能使用 re
我正在处理一个数据框,我想在其中显示某些值的百分比。我将它们计算为十进制值,然后应用格式字符串将它们转换为百分比。当数据框转换为百分比时,它无法正确地对百分比进行排序。 d = {'name': ['
我想通过 pandas 对 pyhon 中的嵌套字典进行排序。 import pandas as pd # Data structure (nested list): # { # category
for i in str_list: #str_list is a set contain some strings df.loc[i].sort_values(by = 'XXX') *
我正在尝试使用 pandas sort_values() 函数对 datafarame 进行排序,但返回的结果以一种奇怪的方式排序,如所附图像 所示 最佳答案 问题是列Citation是数字的字符串表
我是 pandas 的新手,在编程环境中处理表格数据。我按特定列对数据框进行了排序,但 Pandas 吐出的答案并不完全正确。 这是我使用的代码: league_dataframe.sort_valu
我正在尝试打印 target_playlist 中的值。问题是我想按 percentuali 列对 target_playlist 中的值进行排序,我使用了 target_playlist.sort_
我有一个数据框,我想在其中一个列(即日期)上排序但是我有一个在索引上运行的循环( while i
此问题已解决。“Env”(“Env”)中有一个看不见的空间。下面的代码是正确的。 问题: 我不明白有关 sort_values 的错误消息。下面是打印的数据框。 print(df)
我有一个数据框,其中列名是时间(0:00、0:10、0:20、...、23:50)。现在,它们按字符串顺序排序(所以 0:00 是第一个,9:50 是最后一个)但我想按时间对它们进行排序(所以 0:0
问题: 如何根据下面在 top_5 变量中捕获的 sort_values 标准向 plot 添加水平线。: 数据: 这是 data 的一部分在 CSV 中: 这是当前情节。 axnum = today
dataset = pd.read_csv("dataset.csv").fillna(" ")[:100] dataset['Id']=0 dataset['i']=0 dataset['j']=0
大家好,我试图到处寻找这个问题,但我找不到解决方案。如果你能帮助我,我会很高兴。 所以,基本上我有这个数据集: df = pd.DataFrame({"col1": ['xxx', 'xxx', 'x
我有一个df: Date Symbol Person 0 2019 Q3 A Bob 1 2019 Q3 A Jon 2 2019 Q3
我有以下数据子集,我需要按升序对 Education 列进行排序;从 0 到 17。 我尝试了以下代码但没有成功。 suicide_data.sort_index(axis=0, kind='merg
Python Pandas 提供了两种对 DataFrame 进行排序的方法: sort_values (或已弃用 sort ) sort_index 这两种方法有什么区别? 最佳答案 由于问题已更新
在工作中,我们最近升级到 pandas 0.20,我有一个使用 sort 排序的数字列表(但是不再支持此功能,我在尝试 sort_values 时收到上述消息)。 numbers = [1, 3, 4
我是一名优秀的程序员,十分优秀!