【发布时间】:2021-12-01 20:39:24
【问题描述】:
我有一个带有一列列表的 pandas 数据框,我正在尝试根据另一个列表列表将其过滤掉。
id path
101 ['Activities (DEV)', 'public', '_yoyo_log']
102 ['Activities (DEV)', 'public', 'behavior_trackers']
103 ['Activities (DEV)', 'public', 'journal_entries']
104 ['Social (PROD)', 'public', 'starva_activity']
105 ['pg-prd (DEV-RR)', 'public', 'activities']
106 ['pg-prd (DEV-RR)', 'public', 'blackouts']
还有一个列表
slist = [['activities (dev)', 'public', 'behavior_trackers'],
['activities (dev)', 'public', 'journal_entries'],
['pg-prd (dev-rr)', 'public', 'activities']]
我要做的是根据列表值过滤掉熊猫数据框。这是我尝试过的:
df = df[df['path'].apply(lambda x: eval(str(x).lower())).isin(slist)]
这种方法有时有效,但大多数时候会抛出错误提示
TypeError: unhashable type: 'list'
我希望我的输出是这样的
id path
102 ['Activities (DEV)', 'public', 'behavior_trackers']
103 ['Activities (DEV)', 'public', 'journal_entries']
105 ['pg-prd (DEV-RR)', 'public', 'activities']
有没有更好的方法来做到这一点,或者我错过了什么?我正在使用 pyenv 3.6.2
【问题讨论】:
-
list是 Python 中的关键字,您将其用作变量名,请尝试给它另一个名称。 -
我在这个例子中使用列表作为变量。
-
我更新了变量名
标签: python pandas list dataframe nested-lists