如何在pandas DataFrame的每一行新增同一列表作为新列?
在Pandas DataFrame每行添加相同列表作为新列的方法
你已经搞定了添加单一值列和不同值列的操作,现在要给每行都加同一个列表作为新列,其实很简单,这里给你两种靠谱的实现方式,还会帮你避开容易踩的坑:
方法1:列表推导式(推荐,避免引用问题)
如果你想给每行都添加[4,5,6]这类固定列表,直接用列表推导式生成对应长度的列数据就行——这样每行的列表都是独立的对象,后续修改某一行的列表不会影响其他行:
# 假设你的目标列表是[4,5,6] foo['col5'] = [[4,5,6] for _ in range(len(foo))]
执行后你的DataFrame会变成:
col1 col2 col3 col4 col5 0 1 0 1 a [4,5,6] 1 2 0 1 b [4,5,6] 2 3 1 1 c [4,5,6]
方法2:使用apply方法
用apply遍历每行并返回目标列表,代码可读性也不错:
foo['col5'] = foo.apply(lambda x: [4,5,6], axis=1)
执行后效果和上面完全一致。
要避开的坑
- 别直接写
foo['col5'] = [4,5,6],这会让pandas把列表的每个元素分别赋值给每行,结果col5会变成4,5,6,不是你想要的整列表格式。 - 也别用
foo['col5'] = [[4,5,6]] * len(foo),虽然表面看起来正确,但所有行的列表其实是同一个引用——比如你修改其中一行的列表,所有行的列表都会跟着变,这大概率不是你想要的结果。
内容的提问来源于stack exchange,提问作者Mike S
相关产品推荐
相关产品推荐

