Python 仅替换列中的整数值,并使用pd.cut重命名值?

Python 仅替换列中的整数值,并使用pd.cut重命名值?,python,pandas,dataframe,integer,Python,Pandas,Dataframe,Integer,我有一个数据帧'lc',只想将整数值替换为字符串 indexsum 82445 start 82446 start 82447 start 82448 11 82449 10 82450 12 82451 12 82452 9 82453 11 82454 9 82455

我有一个数据帧'lc',只想将整数值替换为字符串

            indexsum
    82445    start
    82446    start
    82447    start
    82448       11
    82449       10
    82450       12
    82451       12
    82452        9
    82453       11
    82454        9
    82455       10
    82456       10
    82457        9
    82458        9
    82459        9
我已经学会了使用pd.cut方法并编写这样的代码,但出现了错误消息。如果在同一列中有字符串和整数值,则似乎无法使用此代码。我必须使用什么功能?(代替映射方法)

我们可以使用以下方法:


让我们使用
pd.to\u numeric
with
errors='coerece'

df['lc'] = pd.cut(pd.to_numeric(df.indexsum, errors='coerce'),bins=[-np.inf,0,4,8,12,16], labels=["start","growth","mature","revival","decline"]).fillna('start')
输出:

      indexsum       lc
82445    start    start
82446    start    start
82447    start    start
82448       11  revival
82449       10  revival
82450       12  revival
82451       12  revival
82452        9  revival
82453       11  revival
82454        9  revival
82455       10  revival
82456       10  revival
82457        9  revival
82458        9  revival
82459        9  revival

谢谢还有一个问题!如果我想将indexsum中的值“start”保存到lcindex中,以便在lcindex列中没有任何Nan值,该怎么办?@TTaa,请检查Scott Boston的回答:)我认为
。fillna(df.indexsum)
会更健壮一些,因为OP可能有不同的字符串(不仅仅是
start
):)我不认为这会起作用,因为pd.cut返回category dtype,而其他人可能返回不在标签中的字符串。这是一个很好的观点,谢谢!我们可以在末尾添加
.astype('category')
——这将使该系列回到
category
dtype
df['lc'] = pd.cut(pd.to_numeric(df.indexsum, errors='coerce'),bins=[-np.inf,0,4,8,12,16], labels=["start","growth","mature","revival","decline"]).fillna('start')
      indexsum       lc
82445    start    start
82446    start    start
82447    start    start
82448       11  revival
82449       10  revival
82450       12  revival
82451       12  revival
82452        9  revival
82453       11  revival
82454        9  revival
82455       10  revival
82456       10  revival
82457        9  revival
82458        9  revival
82459        9  revival