如何合并三个Series,将对应位置元素拼接为整数生成新Series?
实现对应位置元素拼接为整数的方法
给定三个序列:
s1 = [1,1,3] s2 = [2,3,2] s3 = [4,2,1]
需要生成新序列s_new = [124,132,321],即把对应索引位置的元素依次拼接成整数,以下是几种正确的实现方式:
针对普通列表的实现
方式1:字符串拼接法
利用zip打包对应位置元素,转字符串拼接后转整数:
s_new = [int(''.join(map(str, items))) for items in zip(s1, s2, s3)]
zip(s1, s2, s3)会将三个列表对应位置的元素打包成元组,比如(1,2,4)、(1,3,2)map(str, items)把元组里的每个数字转成字符串''.join(...)拼接字符串,再用int()转成整数
方式2:数学计算法(适合元素为个位数的场景)
直接通过数位权重计算,避免字符串操作,效率更高:
s_new = [a * 100 + b * 10 + c for a, b, c in zip(s1, s2, s3)]
- 第一个元素作为百位(×100),第二个作为十位(×10),第三个作为个位(×1),相加得到目标整数
针对Pandas Series的实现
如果你的s1、s2、s3是Pandas的Series对象,可直接用以下方法:
方式1:字符串拼接法
import pandas as pd s1 = pd.Series([1,1,3]) s2 = pd.Series([2,3,2]) s3 = pd.Series([4,2,1]) s_new = (s1.astype(str) + s2.astype(str) + s3.astype(str)).astype(int)
方式2:数学计算法
s_new = s1 * 100 + s2 * 10 + s3
内容的提问来源于stack exchange,提问作者the.lotuseater
相关产品推荐
相关产品推荐

