我有一个像这样的数据框:
>>> MCQ_DATA['q45']
10 [13, 14]
11 [13, 14]
12 [13, 12]
13 [13, 12]
14 [9, 12]
15 [2, 6]
16 [2]
17 [16]
18 [13, 12]
19 [13, 11]
因此,列“ q45”的所有值都是列表。我想为包含13的行创建一个布尔过滤器,例如:
>>> [MCQ_DATA['q45'] == 13]
10 True
11 True
12 True
13 True
14 False
15 False
16 False
17 False
18 True
19 True
已经尝试过这些:
[MCQ_DATA['q45'] == 13]
对于所有内容均返回false。
[MCQ_DATA['q45'].isin([13])]
返回TypeError
。此外,这还会根据列表查找值。我想检查数据框中的嵌套列表中的值。 (来自Use a list of values to select rows from a pandas dataframe)
df.loc[df['q45'] == 13]
返回一个空数据帧,因为没有一个值是13
。 (来自Select rows from a DataFrame based on values in a column in pandas)
df['q45'].apply(lambda sublist: 13 in sublist)
终于可以了。但是消息人士说,这不是一种有效的方法:Operating on tuples held within Pandas DataFrame column)
我一直在寻找半小时的必备条件,如果最后一种方法不是正确的方法,那么正确的方法是什么?
进一步测试发现这也有效。我会说这是最好的方法。使用熊猫框架,易于阅读:
df['q45'].dropna().apply({13}.issubset)
-我想如果大规模地这样做会更快,但是也许有人知道。 (我需要.dropna()
,因为nan
给出了错误。)