我是python的新手,我不明白为什么会出现以下错误:ValueError:与Series不兼容的索引器。
我正在尝试将日期添加到我的数据框中。
我试图添加的日期:
date = (chec[(chec['Día_Sem']=='Thursday') & (chec['ID']==2011957)]['Entrada'])
date
日期输出:
56 1900-01-01 07:34:00
Name: Entrada, dtype: datetime64[ns]
然后我尝试使用loc:将"日期"添加到我的数据框中
rep.loc[2039838,'Thursday'] = date
rep
我得到了这个错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-347-3e0678b0fdbf> in <module>
----> 1 rep.loc[2039838,'Thursday'] = date
2 rep
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in __setitem__(self, key, value)
188 key = com.apply_if_callable(key, self.obj)
189 indexer = self._get_setitem_indexer(key)
--> 190 self._setitem_with_indexer(indexer, value)
191
192 def _validate_key(self, key, axis):
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value)
640 # setting for extensionarrays that store dicts. Need to decide
641 # if it's worth supporting that.
--> 642 value = self._align_series(indexer, Series(value))
643
644 elif isinstance(value, ABCDataFrame):
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _align_series(self, indexer, ser, multiindex_indexer)
781 return ser.reindex(ax)._values
782
--> 783 raise ValueError('Incompatible indexer with Series')
784
785 def _align_frame(self, indexer, df):
ValueError: Incompatible indexer with Series
我也面临类似的问题,但情况不同。我遇到了重复索引的线程,但我当然不是这样。对我有效的是使用.at
代替.loc
。所以你可以试着看看它是否有效
rep['ursday'].at[2039838]=date.values[0]
尝试date.iloc[0]
而不是date
:
rep.loc[2039838,'Thursday'] = date.iloc[0]
因为date
实际上是一个值的系列(所以基本上像一个列表/数组(,而.iloc[0]
实际上选择了值。
您使用loc来获取特定的值,并且您的日期类型是序列或数据帧,两者之间的类型不匹配,您可以更改代码以将日期值赋予rep.loc[2039838,'ursday'],例如,如果您的日期类型是序列且不为null,则可以执行以下操作:
rep.loc[2039838,'Thursday'] = date.values[0]