列表的Pandas DataFrame列:删除特定值 [英] Pandas DataFrame Column of Lists: Remove a Specific Value

查看:1143
本文介绍了列表的Pandas DataFrame列:删除特定值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有一列列表的Pandas DataFrame.我想创建一个包含这些相同列表的新列,减去一个特定元素:

I have a Pandas DataFrame with a column of lists. I want create a new column that is comprised of these same lists, minus one specific element:

[In]:
key1 = 'site channel fiscal_week'.split()
key2 = 'site dude fiscal_week'.split()
key3 = 'site eng fiscal_week'.split()

keys = pd.DataFrame({'key': [1,2,3],
                     'dims': [key1,key2,key3]})

keys

[Out]:
                         dims  key
[site, channel, fiscal_week]    1
[site, dude, fiscal_week]       2
[site, eng, fiscal_week]        3

这是我的方法失败了:

keys['reduced_dims'] = keys['dims'].remove('fiscal_week')

我需要能够删除特定的元素,而不是最后一个元素的pop().

I need to be able to remove a specific element, not pop() off the last element.

所需的输出:

[Out]:
                        dims  key  reduced_dims
[site, channel, fiscal_week]    1  [site, channel]
[site, dude, fiscal_week]       2  [site, dude]
[site, eng, fiscal_week]        3  [site, eng]

推荐答案

keys['dims']pd.Series,而不是list,并且没有list.remove()方法.您应该使用 pd.Series.apply() 方法,这会将某些功能应用于每行中的值.

keys['dims'] is a pd.Series, not list, and there's no list.remove() method. You should use pd.Series.apply() method, which applies some function to the values in each row.

keys['reduced_dims'] = keys['dims'].apply(
    lambda row: [val for val in row if val != 'fiscal_week']
)

keys['reduced_dims']

Out:
0    [site, channel]
1       [site, dude]
2        [site, eng]
Name: reduced_dims, dtype: object

您不能只使用list.remove()函数来代替列表理解,

And you can't use just list.remove() function instead of list comprehension,

lambda row: [val for val in row if val != 'fiscal_week']

因为list.remove()返回None,您将获得这样的系列:

because list.remove() returns None and you will get such series:

keys['reduced_dims'] = keys['dims'].apply(lambda x: x.remove('fiscal_week'))
keys['reduced_dims']

Out:
0    None
1    None
2    None
Name: reduced_dims, dtype: object

这篇关于列表的Pandas DataFrame列:删除特定值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆