我尝试使用Pandas. drop_duplicates(),只考虑某个子集,但得到错误KeyError: Index(['days'], dtype='object')
该指数如下:id, event_description, attribute1, attribute 2, attribute 3, days, days_supply, days_equivalent
我希望忽略属性2和属性3,因此运行了以下命令
df = df.drop_duplicates(subset=['id', 'event_description', 'attribute1', 'days', 'days_supply', 'days_equivalent'])
该函数返回:
eyError Traceback (most recent call last)
<ipython-input-4-3f7da32b380f> in <module>
7
8 df = df.drop_duplicates(subset=['id', 'event_description', 'attribute1', 'days',
-> 9 'days_supply', 'days_equivalent'])
10
11 print(df)
/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in drop_duplicates(self, subset, keep, inplace)
4892
4893 inplace = validate_bool_kwarg(inplace, "inplace")
-> 4894 duplicated = self.duplicated(subset, keep=keep)
4895
4896 if inplace:
/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in duplicated(self, subset, keep)
4949 diff = Index(subset).difference(self.columns)
4950 if not diff.empty:
-> 4951 raise KeyError(diff)
4952
4953 vals = (col.values for name, col in self.items() if name in subset)
KeyError: Index(['days'], dtype='object')
一旦我删除了days
,删除重复项就可以正常运行,但是我需要确保我考虑了days
。
4条答案
按热度按时间6ojccjat1#
必须重新检查列名。
Days
与days
wn9m85ua2#
还要检查列名称是否由于某种原因而丢失。可能是合并的结果
df.columns
yyyllmsg3#
试试
出发地:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html
试试
也许你的df格式不好,无论如何如果你认为这个问题与dtype有关,你可以使用函数apply来检查df ['date']的整个数据,如下所示:
anhgbhbe4#
我重现了一个有点类似的情况:列配置错误(一对多余的方括号)的DataFrame返回一个看起来不错的结果(图1)。
图1伪OK数据框(内部腐烂)x1c 0d1x
但如果你想删除重复的,
Pandas归来:
所以我跟踪David's suggestion找到了罪魁祸首!
当然,正确的配置如下所示:)