我有一个小问题:我的 DataFrame 中有一个列,它有多行,每行包含 1 个或多个以“M”字母开头,后跟 3 位数字的值。如果值超过 1 个,则用逗号分隔。我想打印出 DataFrame 的视图,仅包含其中 1 列保存我指定的值的行(例如,我希望它们保存列表 ['M111', 'M222'] 中的任何项目。我已经开始构建我的布尔掩码的方式如下:
df[df['Column'].apply(lambda x: x.split(', ').isin(['M111', 'M222']))]
Run Code Online (Sandbox Code Playgroud)
在我看来, .apply() 和 .split() 方法首先将“Column”值转换为每行中包含 1 个或多个值的列表,然后 .isin() 方法确认是否有任何项目每行中的项目列表都在指定值列表中 ['M111', 'M222']。然而在实践中,我没有得到所需的 DataFrame 视图,而是收到错误
'TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
亲切的问候,格力姆
我有一个问题,我觉得以前可能已经问过,但是形式不同。如果是这种情况,请指出我的原文。
无论如何,我正在使用Pandas extractall()方法,但我不喜欢它返回具有MultiLevel索引的DataFrame并(original index -> 'match' index)列出所有找到的元素的事实,match 0, match 1, match 2 ...
如果输出是具有多个正则表达式搜索结果的单个索引DataFrame( (如果适用)返回为单个单元格中的列表。目前有可能吗?
这是我所想到的可视化效果:
电流输出:
X
index match
0 0 thank
1 0 thank
1 thanks
2 thanking
2 0 thanked
Run Code Online (Sandbox Code Playgroud)
所需的输出
X
index
0 thank
1 [thank, thanks, thanking]
2 thanked
Run Code Online (Sandbox Code Playgroud)
任何建议,我将不胜感激。