首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >drop_duplicates - TypeError:在*后面键入对象参数必须是序列,而不是映射

drop_duplicates - TypeError:在*后面键入对象参数必须是序列,而不是映射
EN

Stack Overflow用户
提问于 2016-06-13 14:56:10
回答 1查看 8.9K关注 0票数 14

我已更新我的问题,以提供一个更清楚的例子。

是否可以使用Pandas中的drop_duplicates方法根据列id删除重复行,其中的值包含一个列表。考虑一下“三”列,它由列表中的两项组成。是否有一种方法可以删除重复的行,而不是迭代执行(这是我当前的解决办法)。

我列举了以下例子,概述了我的问题:

代码语言:javascript
运行
复制
import pandas as pd

data = [
{'one': 50, 'two': '5:00', 'three': 'february'}, 
{'one': 25, 'two': '6:00', 'three': ['february', 'january']},
{'one': 25, 'two': '6:00', 'three': ['february', 'january']},
{'one': 25, 'two': '6:00', 'three': ['february', 'january']},
{'one': 90, 'two': '9:00', 'three': 'january'}
]

df = pd.DataFrame(data)

print(df)

   one                three   two
0   50             february  5:00
1   25  [february, january]  6:00
2   25  [february, january]  6:00
3   25  [february, january]  6:00
4   90              january  9:00

df.drop_duplicates(['three'])

结果出现以下错误:

代码语言:javascript
运行
复制
TypeError: type object argument after * must be a sequence, not map
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-15 10:51:47

我认为这是因为列表类型是不可接受的,这会扰乱重复的逻辑。作为一种解决方法,您可以像这样将元组转换为:

代码语言:javascript
运行
复制
df['four'] = df['three'].apply(lambda x : tuple(x) if type(x) is list else x)
df.drop_duplicates('four')

   one                three   two                 four
0   50             february  5:00             february
1   25  [february, january]  6:00  (february, january)
4   90              january  9:00              january
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37792999

复制
相关文章

相似问题

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