pandas:转换数据帧集合时,缓冲区的维数错误(预期为1,得0)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas:转换数据帧集合时,缓冲区的维数错误(预期为1,得0)相关的知识,希望对你有一定的参考价值。
我有一个包含一个元素集的列的数据框。单元素总是str
类型。我想将此列的值更改为每组中的str
。
到目前为止,我对熊猫的理解使我在我的数据框架上使用了transform
函数。因为我只想更改一列,所以我专门在该列上调用它。
我已经尝试过map
,transform
和apply
(我不能(?)使用applymap,因为该列只是一个系列)。我尝试过的例子如下:
df['foo'].map(''.join)
df['foo'].transform(''.join)
df['foo'].apply(''.join)
这会将我的列作为一个系列返回,但不会就地更改df
的foo
列的值。然后我尝试了这些:
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]
我认为我对apply
,map
,transform
等的理解需要一些工作,但我只想弄清楚如何做到这一点,也许为什么我的方法不起作用。谢谢!
答案
修复:正如@Yuca所提到的,我有重复的列名。这是因为我之前从分配给df
列的原始MultiIndex中删除了2/3级别。当我重新分配具有唯一名称的列时,使用=
的行有效!谢谢大家的帮助。
以上是关于pandas:转换数据帧集合时,缓冲区的维数错误(预期为1,得0)的主要内容,如果未能解决你的问题,请参考以下文章
Cython ValueError:缓冲区的维数错误(预期为 2,得到 3)