假设我有一个dataframe,看起来像这样:
col1
0 ['str1', 'str2']
1 ['str3', 'str4']
2 []
3 ['str2', 'str4']
4 ['str1', 'str3']
5 []
我正在尝试创建一个df.query()字符串,它相当于在col1中输入“'str3'”,因此它将返回:
col1
1 ['str3', 'str4']
4 ['str1', 'str3']
我已经尝试了df.query(“col1.str.contains('str3 ')”),但结果是
“[Float64Index([nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan],\n dtype='float64',length=652)]都不在[index]中”
我猜是因为这个专栏中的许多列表可能是空的,并且转换为nan浮点数而不是字符串?
最好使用查询字符串而不是列表构造函数,因为我希望这是一个脚本,其他用户可以使用他们可能制作的这些查询字符串来过滤 Dataframe 。
2条答案
按热度按时间3b6akqbq1#
如果你有一系列的列表,你不能使用
query
,而是使用列表解析的布尔索引。如果需要链接命令,请使用
loc
和lambda:输出:
7xllpg7q2#
在你的设置中是否可以使用lambda函数?因为看起来数据可以用掩码过滤:
df['col'].apply(labmda x: 'str3' in x)