用Python将原始分数存储到100个存储箱中
我在数据框的一列中有原始分数,希望将这些值存储到100个存储箱中,并将其存储在名为SCORE的列中。 但我的代码正在创建NaN值用Python将原始分数存储到100个存储箱中,python,python-3.x,pandas,Python,Python 3.x,Pandas,我在数据框的一列中有原始分数,希望将这些值存储到100个存储箱中,并将其存储在名为SCORE的列中。 但我的代码正在创建NaN值 import pandas as pd df_output = pd.DataFrame({'RAW_SCORE' : [.000742, .000745, .000826]}) bins = list(range(0, 101)) df_output['SCORE'] = pd.cut(df_output['RAW_SCORE'], bins=bins) bins
import pandas as pd
df_output = pd.DataFrame({'RAW_SCORE' : [.000742, .000745, .000826]})
bins = list(range(0, 101))
df_output['SCORE'] = pd.cut(df_output['RAW_SCORE'], bins=bins)
bins
这是我的密码:
bins = list(range(1, 101))
df_output['SCORE'] = pd.cut(df_output['RAW_SCORE'], bins)
以下是输出:
RAW_SCORE SCORE
0.000742 NaN
0.000745 NaN
0.000826 NaN
0.000849 NaN
0.000853 NaN
0.000884 NaN
0.000911 NaN
0.00097 NaN
0.001014 NaN
0.001027 NaN
我所期待的是分数栏中的1到100号垃圾箱。
假设我的数据框中有300条记录,那么如果我将记录放入100个存储箱中,每个存储箱将有3条记录
实际产量:
RAW_SCORE SCORE
0.000742 1
0.000745 1
0.000826 1
0.000849 2
0.000853 2
0.000884 2
0.000911 3
0.00097 3
0.001014 3
0.001027 4
0.001031 4
0.001042 4
.......
怎么了?如何修复它?我认为代码中的问题是,您在
pd.cut()
函数中传递了一系列bin间隔。在这种情况下,cut将在{(1,2],(2,3],…,(99100]}
中为每个RAW_SCORE
值分配一个bin。由于所有RAW_SCORE
值都是我认为代码中的问题是在pd.cut()中传递了一系列bin间隔
函数。在这种情况下,cut将在{(1,2],(2,3],…,(99100]}
中为每个原始分数
值分配一个bin。由于所有原始分数
值都是@Aniruddha的答案可能是您在输出方面所寻找的(但不清楚),但由于范围的下限值大于“原始分数”列中的值,因此您将获得NaN。如果将范围中的1更改为0,则代码将不会返回NaN值
import pandas as pd
df_output = pd.DataFrame({'RAW_SCORE' : [.000742, .000745, .000826]})
bins = list(range(0, 101))
df_output['SCORE'] = pd.cut(df_output['RAW_SCORE'], bins=bins)
bins
输出:
RAW_SCORE SCORE
0 0.000742 (0, 1]
1 0.000745 (0, 1]
2 0.000826 (0, 1]
@Aniruddha的答案可能是您在输出方面所寻找的(但不清楚),但由于范围的下限值大于“原始分数”列中的值,因此您会得到NaN。如果将范围中的1更改为0,则代码将不会返回NaN值
import pandas as pd
df_output = pd.DataFrame({'RAW_SCORE' : [.000742, .000745, .000826]})
bins = list(range(0, 101))
df_output['SCORE'] = pd.cut(df_output['RAW_SCORE'], bins=bins)
bins
输出:
RAW_SCORE SCORE
0 0.000742 (0, 1]
1 0.000745 (0, 1]
2 0.000826 (0, 1]
请在复制/可复制模式下共享一个示例数据框,以便人们可以对其进行操作。请在复制/可复制模式下共享一个示例数据框,以便人们可以对其进行操作。分数列的实际输出必须是BIN编号1到100。您已将当前输出放在表格中。您是否可以将预期输出放在问题@Ram中的表格中?act分数列的实际输出必须是1到100号仓位。您已经将当前输出放在一个表中。您可以将预期输出放在问题@Ram中的一个表中吗?分数列的实际输出必须是1到100号仓位。我假设您需要每个原始分数条目的1到100号仓位标签,其中每个仓位都有一个统一的宽度在这种情况下,您可以在pd.cut()函数中传递参数labels=False。这将为您提供一组0-99之间的标签。您可以使用df['bins']=df['bins']将此标签转换为1-100+1分数列的实际输出必须是1到100号仓位。我假设每个原始分数条目都需要1到100的仓位标签,每个仓位都有一个统一的宽度。在这种情况下,您可以在pd.cut()中传递参数labels=False函数。这将为您提供一组0-99之间的标签。您可以通过使用df['bins']=df['bins']+1分配1,将此标签转换为1-100