防止在 Pandas 中广播 [重复]

Posted

技术标签:

【中文标题】防止在 Pandas 中广播 [重复]【英文标题】:Preventing Broadcasting in Pandas [duplicate] 【发布时间】:2019-11-01 06:29:11 【问题描述】:

我们有将数组填充到数据框中的代码(是的,我知道,这不是最佳实践)。

df.at[index,'alist'] = list(alist)

alist是一个列表,但是广播阻止了操作,所以list(alist)被用来阻止广播并允许操作。

随着最后一组源库更新list(alist)开始广播,导致此行失败并出现错误Must have equal len keys and value when setting with an ndarray

关于如何纠正的任何想法?

【问题讨论】:

“导致这条线失败”,你遇到了什么错误? 你分配给一个单元格,这里真的没有广播。 @cs95 谢谢,问题已更新并包含错误消息。 【参考方案1】:

at 不会为您转换 dtypeloc 会出错,因为它假定您正在尝试将列表推送到多个单元格中。

转换您的dtype,然后使用at

df = pd.DataFrame(1, range(10), [*'ABC'])

df = df.astype('A': object)

df.at[2, 'A'] = [1, 2, 3]

df

           A  B  C
0          1  1  1
1          1  1  1
2  [1, 2, 3]  1  1
3          1  1  1
4          1  1  1
5          1  1  1
6          1  1  1
7          1  1  1
8          1  1  1
9          1  1  1
​

【讨论】:

This was my suspicion as well,但我原以为这会抛出 ValueError: setting an array element with a sequence. 他们的错误消息似乎另有说明,但我认为 dtype=object 转换应该可以解决它。 @cs95 这是这个 dup imo 的目标 也许,也许不是。他们的错误信息与我们的代码产生的不同这一事实仍然困扰着我......

以上是关于防止在 Pandas 中广播 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 json_normalize 在 Pandas 中重复列标题?

防止 Flutter WebView 溢出水平滚动轮播?

防止 twitter 引导轮播在页面加载时自动滑动

要合并的大文件。如何防止熊猫合并中的重复?

如何防止 Bootstrap 轮播图像堆叠? HTML/CSS(使用 PHP 显示图像)

单击右/左控件后如何防止Bootstrap轮播恢复幻灯片动画