首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValueError:在数据帧中添加日期到日期时与系列不兼容的索引器

ValueError:在数据帧中添加日期到日期时与系列不兼容的索引器
EN

Stack Overflow用户
提问于 2022-02-22 02:29:35
回答 3查看 1.8K关注 0票数 0

我对python还不熟悉,我不知道为什么会出现这样的错误: ValueError:与Series不兼容的索引器。

我正试图在我的数据框架中添加一个日期。

我想补充的日期是:

代码语言:javascript
运行
复制
date = (chec[(chec['Día_Sem']=='Thursday') & (chec['ID']==2011957)]['Entrada'])
date

日期输出:

代码语言:javascript
运行
复制
56   1900-01-01 07:34:00
Name: Entrada, dtype: datetime64[ns]

然后,我尝试使用loc将“日期”添加到数据帧中:

代码语言:javascript
运行
复制
rep.loc[2039838,'Thursday'] = date
rep

我得到了一个错误:

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
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
EN

回答 3

Stack Overflow用户

发布于 2022-02-22 02:34:41

尝试date.iloc[0]而不是date

代码语言:javascript
运行
复制
rep.loc[2039838,'Thursday'] = date.iloc[0]

因为date实际上是一个值的序列(基本上类似于一个列表/数组),而.iloc[0]实际上选择了这个值。

票数 0
EN

Stack Overflow用户

发布于 2022-02-22 03:33:55

您可以使用loc获取一个特定的值,而您的日期类型是一个序列或数据类型,两者之间的类型不能匹配,您可以更改代码将日期的值赋给rep.loc2039838,例如,如果您的日期类型是一个序列而不是null,您可以这样做:

代码语言:javascript
运行
复制
rep.loc[2039838,'Thursday'] = date.values[0]
票数 0
EN

Stack Overflow用户

发布于 2022-05-10 09:16:04

我也面临着类似的问题,但情况不同。我遇到了重复索引的线程,但当然不是这样的。对我来说起作用的是用.at代替.loc。所以你可以试着看看它是否有效

代表‘周四’电话:2039838= date.values

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71215246

复制
相关文章

相似问题

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