我有一份a
和DataFrame dfdf
的列表
我正在尝试将我的列表a
添加到我的DataFrame dfdf
的一个单元格
下面是我的代码:
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
但是,它会返回一个错误:
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
我尝试这样添加它:
name number age new
0 Andy 1 10 [1, 2]
1 Bob 2 20 50
2 Charlie 3 30 50
有人能帮我解决这个问题吗?非常感谢
发布于 2021-02-10 12:27:30
您的代码运行良好,并返回以下输出,这是正确的,但与您列出的预期输出不同:
Name Number Age Place
0 andy 1 10 [1, 2, 3]
1 bob 2 20
2 charlie 3 30
关键的一步是将类型更改为object,以允许将列表插入到现有的dataframe中,但您已经注意到了这一点。
发布于 2021-02-10 12:26:30
你的代码在我的电脑上运行,生成了下面的表格。
Name Number Age Place
0 andy 1 10 [1, 2, 3]
1 bob 2 20
2 charlie 3 30
为了完整起见,我继续往中添加了额外的50,以便结果与您期望的输出相匹配。
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]
https://stackoverflow.com/questions/66130831
复制相似问题