我有一个小问题:我的DataFrame中有一个列,它有多行,在每一行中,它包含1个或多个以“M”字母开头的值,后跟3个数字。如果有多个值,则用逗号分隔。 我想打印出DataFrame的一个视图,只显示其中1列包含我指定的值的行(例如,我希望它们保存list['M111','M222']中的任何项。 我已经开始用以下方式构建布尔掩码:
df[df['Column'].apply(lambda x: x.split(', ').isin(['M111', 'M222']))]
在我看来,.apply()和其中的.split()方法首先将“Column”值转换为每行中包含1个或多个值的列表,然后.isin()方法确定每行中的项目列表中是否有任何项在指定值列表中['M111','M222']。 但是在实践中,我没有得到所需的DataFrame视图,而是得到了错误
^{pr2}$我做错什么了?在
谨致问候, 格林
只能使用Pandas对象访问
isin()
方法。{But}返回列表。将split()
包装在Series
中可以:现在将
^{pr2}$split()
包装成Series
。请注意,
isin()
将返回一个布尔值列表,对于来自split()
的每个元素一个布尔值。您想知道“list…中的项是否在指定值列表中”,所以请将any()
添加到apply
函数中。在输出:
正如其他人所指出的,有更简单的方法来实现你的最终目标。但这就是如何解决您遇到的
isin()
的具体问题。在我认为你需要:
相关问题 更多 >
编程相关推荐