如何解决ValueError:与系列不兼容的索引器 - 试图修复值
有人可以帮我吗?
我得到了以下数据框:
SEGSTART 列表示客户致电的确切日期和时间。如果此客户端在过去 7 天内调用了两次或更多次,则必须将其视为 RECALL_7d(值 = 1)。如果不是,RECALL_7d 值必须设置为 0。
然而,RECALL_7d 系列包含一些错误,因为有时它会将客户视为召回,有时则不会。我需要解决这个问题,我做到了:
-
首先,我创建了一个名为 days 的列来计算第 i 行和第 i+1 行的 segstart 之间的差异:
df['days'] = df.SEGSTART.diff().apply(lambda x: x/np.timedelta64(1,'D')).fillna(0).astype('int64')>
上面的代码返回给我以下数据帧。可以看到,它包含一个“错误”,因为索引 6 的天数应该是 0。所以,为了解决这个问题,我尝试这样做:
size = len(df['Client_id'])
df['days'] = np.nan
for i in range (size-1):
if df.loc[i+1,'Client_id'] == df.loc[i,'Client_id']:
df.loc[i+1,'days'] = df.loc[:i+1,'SEGSTART'].diff().apply(lambda x: x/np.timedelta64(1,'D')).fillna(0).astype('int64')
else:
df.loc[i+1,'days'] = 0
所以我得到了这个错误:
ValueError Traceback(最近一次调用最后一次) 在 5 6 如果 df.loc[i+1,'Client_id']: ----> 7 df.loc[i+1,'D')).fillna(0).astype('int64') 8 其他 9 个:
~\anaconda3\lib\site-packages\pandas\core\indexing.py in setitem(self,key,value) 668 669 iloc = self if self.name == "iloc" else self.obj.iloc --> 670 iloc._setitem_with_indexer(indexer,value) 671 第 672 章
~\anaconda3\lib\site-packages\pandas\core\indexing.py in _setitem_with_indexer(self,indexer,value) 1640 第 1641 章 -> 1642 value = self._align_series(indexer,value) 1643 第1644话
~\anaconda3\lib\site-packages\pandas\core\indexing.py in _align_series(self,ser,multiindex_indexer) 1952 返回 ser.reindex(ax)._values 1953年 -> 1954 引发 ValueError(“与系列不兼容的索引器”) 1955年 1956 def _align_frame(self,df: ABCDataFrame):
ValueError:索引器与系列不兼容
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。