如何向Pandas DataFrame列中的数组元素追加单个值
问题原因
你初始化c列时使用了df1["c"] = [[]] * df1.shape[0]的写法,该写法生成的所有列表是同一个列表对象的引用,所有行的c列都指向内存中的同一个列表,因此修改任意一行的列表,所有行的结果都会同步变化。
解决方法
1. 修正空列表列的初始化逻辑
将初始化代码替换为列表推导式,生成多个独立的空列表:
import pandas as pd df1 = pd.DataFrame({'a':[0,1,2], "b": [3, 4, 6]}) # 用列表推导式生成独立空列表 df1["c"] = [[] for _ in range(df1.shape[0])]
2. 追加目标元素
可以直接定位目标行的列表执行追加,推荐用at方法避免pandas链式索引警告:
df1.at[2, "c"].append(1)
执行后输出结果如下,符合预期:
a b c 0 0 3 [] 1 1 4 [] 2 2 6 [1]
内容的提问来源于stack exchange,提问作者Sagar Luitel
相关产品推荐
相关产品推荐

