在pandas.DataFrame中添加一个np.array作为列

8
我有一个pandas数据框和一个一维的numpy数组。实际上它是一个列表。 如何将数组中的值添加到数据框的新列中? 使用test['preds'] = preds会得到SettingWithCopyWarning警告: 一个值正在尝试被设置到DataFrame的切片副本上,建议使用.loc[row_indexer,col_indexer] = value 来代替。 而当我尝试pd.DataFrame({test,preds})时,我得到了TypeError: unhashable type: 'list'错误提示。

2
你的原始 df 是什么?如果 test 已经是一个 df,那么 test['preds']=preds 就可以工作。 - EdChum
1
为了回答SettingWithCopyWarning警告,你需要发布你的原始DataFrame。 - firelynx
2个回答

10

多亏了 EdChum,问题就在这里。

test= DataFrame(test)
test['preds']=preds

它工作了!


3
我收到了这个警告信息:试图在DataFrame的一个切片副本上设置值。请尝试使用 .loc[row_indexer,col_indexer] = value 来代替。 - mah65

0

这不是pandas的错误,而是因为您正在尝试使用两个列表实例化一个集合而导致的错误。

{test,preds}
#TypeError: unhashable type: 'list'

集合是一种容器,需要所有内容都可哈希,因为集合中不允许重复元素。

话虽如此,将一个集合传递给pandas并不能得到您想要的结果。

然而,将一个字典传递给pandas将起作用,像这样:

pd.DataFrame({"test":test,"preds":preds})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接