Python 仅替换列中的整数值,并使用pd.cut重命名值?
我有一个数据帧'lc',只想将整数值替换为字符串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
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
witherrors='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