pandas:转换数据帧集合时,缓冲区的维数错误(预期为1,得0)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas:转换数据帧集合时,缓冲区的维数错误(预期为1,得0)相关的知识,希望对你有一定的参考价值。

我有一个包含一个元素集的列的数据框。单元素总是str类型。我想将此列的值更改为每组中的str

到目前为止,我对熊猫的理解使我在我的数据框架上使用了transform函数。因为我只想更改一列,所以我专门在该列上调用它。

我已经尝试过maptransformapply(我不能(?)使用applymap,因为该列只是一个系列)。我尝试过的例子如下:

df['foo'].map(''.join)
df['foo'].transform(''.join)
df['foo'].apply(''.join)

这会将我的列作为一个系列返回,但不会就地更改dffoo列的值。然后我尝试了这些:

df['foo'] = df['foo'].map(''.join)
df['foo'] = df['foo'].transform(''.join)
df['foo'] = df['foo'].apply(''.join)

''.join换掉lambda x: next(iter(x))并发生同样的错误。

来自head(df)的一些样本数据(感谢Yuca的建议):

treatment             AAA        AAA        AAA  ...       BBB        BBB   foo                               
15025                 0.0        0.0        0.0  ...  126250.0   191730.0  {K00134}
6746            1523000.0  2374300.0  1394500.0  ...  536750.0  1179000.0  {K00134}
11097           1146200.0   423280.0   316280.0  ...       0.0   115880.0  {K00895}
3098             193000.0    57943.0    94483.0  ...       0.0   191530.0  {K01689}
14797             53168.0        0.0    65262.0  ...       0.0        0.0  {K00169}

[5 rows x 9 columns]

我认为我对applymaptransform等的理解需要一些工作,但我只想弄清楚如何做到这一点,也许为什么我的方法不起作用。谢谢!

答案

修复:正如@Yuca所提到的,我有重复的列名。这是因为我之前从分配给df列的原始MultiIndex中删除了2/3级别。当我重新分配具有唯一名称的列时,使用=的行有效!谢谢大家的帮助。

以上是关于pandas:转换数据帧集合时,缓冲区的维数错误(预期为1,得0)的主要内容,如果未能解决你的问题,请参考以下文章

Cython ValueError:缓冲区的维数错误(预期为 2,得到 3)

Python scikits - 缓冲区的维数错误(预期为 1,得到 2)

通道交换需要与 caffe 中的输入通道错误具有相同的维数

将熊猫数据帧转换为火花数据帧时收到错误

错误的维数:预期为 0,得到 1,形状为 (1,)

无法匹配 Keras LSTM 模型所需的维数