使用Pandas apply()合并列时自动添加.0的问题求助
解决Pandas合并IP与CIDR列时出现.0后缀的问题
你的问题根源是CIDR列被Pandas识别为浮点数类型,使用map(str)转换时会自动带上.0后缀。以下几种修改方式可以解决这个问题:
方法1:读取CSV时指定CIDR列类型
如果原始CSV中CIDR列都是整数且无缺失值,读取时直接指定类型为int,从根源避免被识别为浮点数:
import pandas as pd path = '/Users/myfolder/Downloads/ip.csv' # 指定CIDR列数据类型为整数 df = pd.read_csv(path, dtype={'CIDR': int}) df = df[['Address', 'CIDR']].apply(lambda x: '/'.join(x.map(str)), axis=1) df.to_csv("/Users/myfolder/Downloads/result.txt", header=False, index=False)
方法2:转换CIDR列为整数后再处理
如果CIDR列存在缺失值(导致Pandas自动识别为浮点数),先填充缺失值再转整数:
import pandas as pd path = '/Users/myfolder/Downloads/ip.csv' df = pd.read_csv(path) # 填充缺失值(这里用0示例,可根据实际需求调整)后转整数 df['CIDR'] = df['CIDR'].fillna(0).astype(int) df = df[['Address', 'CIDR']].apply(lambda x: '/'.join(x.map(str)), axis=1) df.to_csv("/Users/myfolder/Downloads/result.txt", header=False, index=False)
方法3:直接格式化字符串拼接
更直观的方式是直接通过格式化字符串拼接IP和CIDR,同时将CIDR转为整数:
import pandas as pd path = '/Users/myfolder/Downloads/ip.csv' df = pd.read_csv(path) # 直接格式化拼接,强制将CIDR转为整数 df = df.apply(lambda x: f"{x['Address']}/{int(x['CIDR'])}", axis=1) df.to_csv("/Users/myfolder/Downloads/result.txt", header=False, index=False)
内容的提问来源于stack exchange,提问作者nickee
相关产品推荐
相关产品推荐

