使用for循环拼接不同DataFrame列值时List列无数据问题求解
问题原因与解决方案
- 核心问题1:新列赋值方式错误
pandas不支持使用df.列名的点语法创建新列,该写法只会给DataFrame对象添加普通Python属性,不会真正写入DataFrame的列结构中,只有已经存在的列才能用点语法修改值。新增列必须使用df['列名']的方括号写法。 - 核心问题2:缺失计数编号拼接逻辑
需要先生成每行对应的计数编号(此处用行索引作为编号,可按需调整分隔符或编号规则),再和两个DataFrame的Camp列拼接。
修正后可运行代码
import pandas as pd df = pd.DataFrame() df['Camp'] = ['AAA', 'BBB', 'CCC'] df['Impr'] = [100, 600, 200] df['Bid'] = [3, 5, 7] df1 = pd.DataFrame() df1['Camp'] = ['XXX', 'YYY', 'ZZZ'] df1['Impr'] = [200, 300, 100] # 方括号赋值新列,拼接计数编号+两个Camp列 df1['List'] = df1.index.astype(str) + df['Camp'] + df1['Camp'] print(df) print("-"*20) print(df1)
运行结果
Camp Impr Bid 0 AAA 100 3 1 BBB 600 5 2 CCC 200 7 -------------------- Camp Impr List 0 XXX 200 0AAAXXX 1 YYY 300 1BBBYYY 2 ZZZ 100 2CCCZZZ
内容的提问来源于stack exchange,提问作者ah2Bwise
相关产品推荐
相关产品推荐

