Python pandas.DataFrame.fillna-TypeError:只能将整数标量数组转换为标量索引
我正试图从熊猫官方文件中找到答案pandas.DataFrame.fillna因此基本上用1的值填充df数据框“myc”列中的NaN值 数据数据帧Python pandas.DataFrame.fillna-TypeError:只能将整数标量数组转换为标量索引,python,python-3.x,pandas,dataframe,dictionary,Python,Python 3.x,Pandas,Dataframe,Dictionary,我正试图从熊猫官方文件中找到答案pandas.DataFrame.fillna因此基本上用1的值填充df数据框“myc”列中的NaN值 数据数据帧 df myc B C D 0 NaN 2.0 NaN 0 1 0.2 4.0 NaN 1 2 NaN NaN NaN 5 3 NaN 3.0 NaN 4 代码1 values = {'myc': 1} df.fillna(value=values) myc B C D 0 1.0 2.
df
myc B C D
0 NaN 2.0 NaN 0
1 0.2 4.0 NaN 1
2 NaN NaN NaN 5
3 NaN 3.0 NaN 4
代码1
values = {'myc': 1}
df.fillna(value=values)
myc B C D
0 1.0 2.0 NaN 0
1 0.2 4.0 NaN 1
2 1.0 NaN NaN 5
3 1.0 3.0 NaN 4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-6a9e5a691bca> in <module>
1 values = {'myc': 1}
----> 2 df.fillna(value=values)
~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in fillna(self, value, method, axis, inplace, limit, downcast)
4315 downcast=None,
4316 ) -> Optional["DataFrame"]:
-> 4317 return super().fillna(
4318 value=value,
4319 method=method,
~/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in fillna(self, value, method, axis, inplace, limit, downcast)
6071 if k not in result:
6072 continue
-> 6073 obj = result[k]
6074 obj.fillna(v, limit=limit, inplace=True, downcast=downcast)
6075 return result if not inplace else None
~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self, key)
2876 if self.columns.nlevels > 1:
2877 return self._getitem_multilevel(key)
-> 2878 return self._get_item_cache(key)
2879
2880 # Do we have a slicer (on rows)?
~/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in _get_item_cache(self, item)
3539
3540 loc = self.columns.get_loc(item)
-> 3541 values = self._mgr.iget(loc)
3542 res = self._box_col_values(values, loc)
3543
~/anaconda3/lib/python3.8/site-packages/pandas/core/internals/managers.py in iget(self, i)
986 Return the data as a SingleBlockManager.
987 """
--> 988 block = self.blocks[self.blknos[i]]
989 values = block.iget(self.blklocs[i])
990
TypeError: only integer scalar arrays can be converted to a scalar index
结果目标1
values = {'myc': 1}
df.fillna(value=values)
myc B C D
0 1.0 2.0 NaN 0
1 0.2 4.0 NaN 1
2 1.0 NaN NaN 5
3 1.0 3.0 NaN 4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-6a9e5a691bca> in <module>
1 values = {'myc': 1}
----> 2 df.fillna(value=values)
~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in fillna(self, value, method, axis, inplace, limit, downcast)
4315 downcast=None,
4316 ) -> Optional["DataFrame"]:
-> 4317 return super().fillna(
4318 value=value,
4319 method=method,
~/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in fillna(self, value, method, axis, inplace, limit, downcast)
6071 if k not in result:
6072 continue
-> 6073 obj = result[k]
6074 obj.fillna(v, limit=limit, inplace=True, downcast=downcast)
6075 return result if not inplace else None
~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self, key)
2876 if self.columns.nlevels > 1:
2877 return self._getitem_multilevel(key)
-> 2878 return self._get_item_cache(key)
2879
2880 # Do we have a slicer (on rows)?
~/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in _get_item_cache(self, item)
3539
3540 loc = self.columns.get_loc(item)
-> 3541 values = self._mgr.iget(loc)
3542 res = self._box_col_values(values, loc)
3543
~/anaconda3/lib/python3.8/site-packages/pandas/core/internals/managers.py in iget(self, i)
986 Return the data as a SingleBlockManager.
987 """
--> 988 block = self.blocks[self.blknos[i]]
989 values = block.iget(self.blklocs[i])
990
TypeError: only integer scalar arrays can be converted to a scalar index
错误表第1页
values = {'myc': 1}
df.fillna(value=values)
myc B C D
0 1.0 2.0 NaN 0
1 0.2 4.0 NaN 1
2 1.0 NaN NaN 5
3 1.0 3.0 NaN 4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-6a9e5a691bca> in <module>
1 values = {'myc': 1}
----> 2 df.fillna(value=values)
~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in fillna(self, value, method, axis, inplace, limit, downcast)
4315 downcast=None,
4316 ) -> Optional["DataFrame"]:
-> 4317 return super().fillna(
4318 value=value,
4319 method=method,
~/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in fillna(self, value, method, axis, inplace, limit, downcast)
6071 if k not in result:
6072 continue
-> 6073 obj = result[k]
6074 obj.fillna(v, limit=limit, inplace=True, downcast=downcast)
6075 return result if not inplace else None
~/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self, key)
2876 if self.columns.nlevels > 1:
2877 return self._getitem_multilevel(key)
-> 2878 return self._get_item_cache(key)
2879
2880 # Do we have a slicer (on rows)?
~/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in _get_item_cache(self, item)
3539
3540 loc = self.columns.get_loc(item)
-> 3541 values = self._mgr.iget(loc)
3542 res = self._box_col_values(values, loc)
3543
~/anaconda3/lib/python3.8/site-packages/pandas/core/internals/managers.py in iget(self, i)
986 Return the data as a SingleBlockManager.
987 """
--> 988 block = self.blocks[self.blknos[i]]
989 values = block.iget(self.blklocs[i])
990
TypeError: only integer scalar arrays can be converted to a scalar index
尝试过的解决方案
- 不是字典-
- 不是字典-
- 未获答覆-
- 不是字典-
- 不是字典-
- 不是字典-
- 我不想改变它-
- 我已经尝试运行以下代码来测试该对象是否为数据帧,它说的是true,所以是-
- 输入
- 输出
True
- 仅应在myc列中替换NaN
- 但您的结果也包含替换的值,例如C中的值 列和NaN在此处替换为2
- 您的代码中出现了一些奇怪的情况,因为:
myc B C D
0 1.0 2.0 NaN 0
1 3.0 4.0 NaN 1
2 1.0 NaN NaN 5
3 1.0 3.0 NaN 4
如果你得到了同样的结果,那么显然是有
你的代码有问题,但在其他地方
(在您介绍的代码之外)
要更改的另一个细节是,值是一个属性
而您不应使用同名变量。简单解决方案
- 将数据帧导出到csv:
df.to_csv(r'somefilename.csv',index=False)
- 将saem数据加载回数据帧:
df1=pd.read\u csv(“r'somefilename.csv”)