首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除熊猫列Python中字符串列表中的重复项

如何删除熊猫列Python中字符串列表中的重复项
EN

Stack Overflow用户
提问于 2018-04-04 14:46:01
回答 4查看 7K关注 0票数 1

我正在尝试删除Pandas DataFrame中列下的字符串列表中的重复字符串。

例如,以下的列表值:

代码语言:javascript
复制
[btc, btc, btc]

应该是;

代码语言:javascript
复制
[btc]

但是,我尝试过多种方法,但似乎没有一种方法起作用,因为我无法访问列表中的字符串值。任何帮助都是非常感谢的。

DataFrame:

代码语言:javascript
复制
          dollar_sign  followers_count  \
0                   [btc]            35946
1                   [btc]            35946
2                   [btc]            35946
3                   [nav]            35946
4         [btc, btc, btc]            35946

访问列下的字符串列表

代码语言:javascript
复制
for row in df_twitter['dollar_sign']:
    print row

输出:

代码语言:javascript
复制
[btc]
[btc]
[btc]
[nav]
[btc, btc, btc]
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-04-04 22:07:28

从显示出来的信息来看,我相信OP的df实际上并不是充满了字符串的列表,而是看起来像列表的字符串。

从OP的打印结果,我们看到

代码语言:javascript
复制
[btc]
[btc]
[nav]
[btc, btc,btc]

但是,如果它是字符串列表,则应该会产生

代码语言:javascript
复制
['btc']
['btc']
['btc']
['nav']
['btc', 'btc', 'btc']

解决方案:

代码语言:javascript
复制
df = pd.DataFrame({
        'dollar_sign':['[btc]','[btc]','[btc]','[nav]','[btc, btc, btc]'],
        'followers_count':[35946,35946,35946,35946,35946]}
     )


df.dollar_sign.str[1:-1].str.split(",\s").map(set)

0    {btc}
1    {btc}
2    {btc}
3    {nav}
4    {btc}
Name: dollar_sign, dtype: object
  • .str[1:-1]移除[]
  • str.split(",\s")用",“、逗号和空格分隔。(假设字符串使用",“作为分隔符,否则,您可能需要"\s*,\s*"或更复杂的东西。)
  • map(set)将每个列表转换为一组。
票数 2
EN

Stack Overflow用户

发布于 2018-04-04 14:54:17

你可以用布景。一组将取出复制件。

因此,作为一个例子,保持输出的样式:

代码语言:javascript
复制
for row in df_twitter['dollar_sign']:
    print list(set(row))

输出:

代码语言:javascript
复制
[btc]
[btc]
[btc]
[nav]
[btc]
票数 3
EN

Stack Overflow用户

发布于 2018-04-04 14:54:52

您可以将listmap结合使用,set可以获得唯一的值。

代码语言:javascript
复制
df['dollar_sign']=list(map(set,df['dollar_sign']))
df
Out[1068]: 
  dollar_sign  followers_count
0       {btc}            35946
1       {btc}            35946
2       {btc}            35946
3       {nav}            35946
4       {btc}            35946

我就是这样创建df的

代码语言:javascript
复制
df=pd.DataFrame({'dollar_sign':[['btc'],['btc'],['btc'],['nav'],['btc','btc','btc']],'followers_count':[35946,35946
,35946
,35946
,35946
]})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49654031

复制
相关文章

相似问题

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