You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:45:28