首页 > 解决方案 > pandas 将项目添加到一系列列表数据类型

问题描述

如何正确地将单个项目添加到一系列列表数据类型中?我尝试制作副本并将项目添加到列表中,但此方法会影响原始数据框

这是我的代码:

df = pd.DataFrame({'num':[['one'],['three'],['five']]})

# make copy of original df
copy_df = df.copy()

# add 'thing' to every single list
copy_df.num.apply(lambda x: x.append('thing'))

# show results of copy_df
print(copy_df) # this will show [['one', 'thing'], ['three', 'things'], ...]

print(df) # this will also show [['one', 'thing'], ['three', 'things'], ...]
# WHY? 

我的问题是:

  1. 为什么上面的方法也会在原始副本中添加元素?
  2. 有没有更好的方法将元素添加到一系列列表中?

标签: pythonpandasdataframe

解决方案


因为您正在复制数据框而不是数据框中的列表,所以内部系列仍然有来自原始数据框的列表的引用。

实现它的更好方法;

copy_df.num = copy_df.num.apply(lambda x: x + ['thing'])

推荐阅读