首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas :如何将列表作为元素添加到DataFrame中的单个单元格

Pandas :如何将列表作为元素添加到DataFrame中的单个单元格
EN

Stack Overflow用户
提问于 2021-02-10 12:16:35
回答 2查看 77关注 0票数 1

我有一份a和DataFrame dfdf的列表

我正在尝试将我的列表a添加到我的DataFrame dfdf的一个单元格

下面是我的代码:

代码语言:javascript
运行
复制
import pandas as pd 

b = [
    ['andy', 1, 10],
    ['bob', 2, 20],
    ['charlie', 3, 30]
] 
dfdf = pd.DataFrame(b)

dfdf.columns = ['Name', 'Number', 'Age']
dfdf['Place'] = ''
dfdf = dfdf.astype(object)

a = [1,2,3]
dfdf.loc[0,'Place'] = a 

但是,它会返回一个错误:

代码语言:javascript
运行
复制
ValueError                                Traceback (most recent call last)
<ipython-input-134-dcf87d474721> in <module>
      1 a = [1,2,3]
----> 2 dfdf.loc[0,'Place'] = a

~\anaconda3\lib\site-packages\pandas\core\indexing.py in __setitem__(self, key, value)
    690 
    691         iloc = self if self.name == "iloc" else self.obj.iloc
--> 692         iloc._setitem_with_indexer(indexer, value, self.name)
    693 
    694     def _validate_key(self, key, axis: int):

~\anaconda3\lib\site-packages\pandas\core\indexing.py in _setitem_with_indexer(self, indexer, value, name)
   1633         if take_split_path:
   1634             # We have to operate column-wise
-> 1635             self._setitem_with_indexer_split_path(indexer, value, name)
   1636         else:
   1637             self._setitem_single_block(indexer, value, name)

~\anaconda3\lib\site-packages\pandas\core\indexing.py in _setitem_with_indexer_split_path(self, indexer, value, name)
   1686                     return self._setitem_with_indexer((pi, info_axis[0]), value[0])
   1687 
-> 1688                 raise ValueError(
   1689                     "Must have equal len keys and value "
   1690                     "when setting with an iterable"

ValueError: Must have equal len keys and value when setting with an iterable

我尝试这样添加它:

代码语言:javascript
运行
复制
    name    number  age new
0   Andy    1       10  [1, 2]
1   Bob     2       20  50
2   Charlie 3       30  50

有人能帮我解决这个问题吗?非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-10 12:27:30

您的代码运行良好,并返回以下输出,这是正确的,但与您列出的预期输出不同:

代码语言:javascript
运行
复制
      Name Number Age      Place
0     andy      1  10  [1, 2, 3]
1      bob      2  20           
2  charlie      3  30    

关键的一步是将类型更改为object,以允许将列表插入到现有的dataframe中,但您已经注意到了这一点。

票数 0
EN

Stack Overflow用户

发布于 2021-02-10 12:26:30

你的代码在我的电脑上运行,生成了下面的表格。

代码语言:javascript
运行
复制
      Name Number Age      Place
0     andy      1  10  [1, 2, 3]
1      bob      2  20           
2  charlie      3  30           

为了完整起见,我继续往中添加了额外的50,以便结果与您期望的输出相匹配。

代码语言:javascript
运行
复制
b = [
    ['andy', 1, 10],
    ['bob', 2, 20],
    ['charlie', 3, 30]
] 
dfdf = pd.DataFrame(b)

dfdf.columns = ['Name', 'Number', 'Age']
dfdf['Place'] = 50
dfdf = dfdf.astype(object)

dfdf.loc[0,'Place'] = [1, 2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66130831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档