生成DataFrame的Day2新列提取Days第二位数字遇问题求解决
解决DataFrame提取Days列第二位数字的问题
你的代码之所以提取到第一位数字,是因为DF["Days"] / 10 % 10的逻辑错误:以35为例,35除以10得到3.5,再对10取余还是3.5,转int后就变成了第一位数字3。
要提取第二位(个位)数字,正确的做法是直接对10取余,以下是两种高效的实现方式:
方式一:矢量化操作(推荐)
利用Pandas的矢量化运算,无需循环,性能更优:
DF["Day2"] = DF["Days"] % 10
测试:当Days=35时,35%10=5;当Days=7时,7%10=7(如果需要一位数的第二位显示为0,可以调整为:DF["Day2"] = DF["Days"].apply(lambda x: x%10 if x>=10 else 0))
方式二:保留你原代码的where逻辑
如果你希望Days<10时保留原数值,只对两位数及以上提取个位,可以调整where的参数:
DF["Day2"] = DF["Days"].where( DF["Days"] < 10, DF["Days"] % 10 ).astype(int)
内容的提问来源于stack exchange,提问作者the phoenix
相关产品推荐
相关产品推荐

