用Python将原始分数存储到100个存储箱中

用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

我在数据框的一列中有原始分数,希望将这些值存储到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
这是我的密码:

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