如何为Pandas DataFrame的整数与字符串列元素添加单引号并生成新列
给Pandas DataFrame的整数和字符串列元素添加单引号的解决方案
我明白你想要给DataFrame里的整数列和字符串列分别生成带单引号的新列,之前尝试的方法没起作用对吧?别担心,这里有几个简单可靠的方法能帮你搞定~
方法一:使用apply配合lambda函数
这是最直观的写法,针对不同类型的列分别处理:
import pandas as pd data = {"id": [101, 102, 103, 104, 105], "person": ['Ty', 'Al', 'Lou', 'Tao', 'Mick']} df = pd.DataFrame(data) # 处理整数列:先转字符串再包裹单引号 df['id_with_quotes'] = df['id'].apply(lambda x: f"'{x}'") # 处理字符串列:直接给元素前后加单引号 df['person_with_quotes'] = df['person'].apply(lambda x: f"'{x}'") print(df)
方法二:矢量化字符串拼接(更高效)
如果你的数据量比较大,推荐用这种矢量化操作,比apply速度更快:
# 整数列需要先转成字符串类型,再拼接单引号 df['id_with_quotes'] = "'" + df['id'].astype(str) + "'" # 字符串列直接拼接即可 df['person_with_quotes'] = "'" + df['person'] + "'"
为什么你之前的代码没生效?
咱们来扒一扒之前代码的问题:
for x in df遍历的是DataFrame的列名,不是列里的元素,所以x拿到的是'id'和'person'这两个字符串,不是你要处理的数值或人名。np.savetxt是用来把数组写入文件的工具,完全不适合用来给单个元素加引号,而且你根本不需要把数据存到文件里,直接在DataFrame内处理就好。x.append(id_in_quotes)这里,x是列名字符串,根本没有append方法,自然会报错。
最终效果
运行上面的代码后,你会得到包含四列的DataFrame,完全符合你的需求:
id person id_with_quotes person_with_quotes 0 101 Ty '101' 'Ty' 1 102 Al '102' 'Al' 2 103 Lou '103' 'Lou' 3 104 Tao '104' 'Tao' 4 105 Mick '105' 'Mick'
内容的提问来源于stack exchange,提问作者BrianBeing
相关产品推荐
相关产品推荐

