Pandas修改DataFrame行字符串时保留Site、Login表头的方法咨询
问题原因
你当前的写法是单独提取Site列做字符串拼接,得到的newdf是一维的Series类型,自然不会保留原DataFrame的Site、Login两个表头。
解决方法
有两种常用实现方式,都可以实现修改Site列内容的同时保留原有表头:
- 方法1:修改对应列后拷贝生成新对象
注意不要用list作为变量名,list是Python内置关键字,重名会导致后续调用内置方法时报错。
示例代码:import pandas as pd # 读取时直接指定需要的两列,不需要二次构建DataFrame df = pd.read_csv('sites.csv', sep=',', usecols=['Site', 'Login']) # 修改Site列的内容,拼接指定字符串 df['Site'] = df['Site'].astype(str) + 'login' # 生成新的DataFrame,不影响原df的内容 newdf = df.copy() - 方法2:用
assign方法直接生成新DataFrame,不改动原对象
如果你不想修改原始的df对象,可以直接用assign方法生成新的DataFrame:import pandas as pd df = pd.read_csv('sites.csv', sep=',', usecols=['Site', 'Login']) # assign会返回新的DataFrame,仅更新指定列的内容,保留其余列和表头 newdf = df.assign(Site=df['Site'].astype(str) + 'login')
内容的提问来源于stack exchange,提问作者Douglas Soares
相关产品推荐
相关产品推荐

