如果列是列表,是否可以过滤 Pandas DataFrame 列?
Is it possible to filter Pandas DataFrame column if column is a list?
import pandas as pd
dafr = pd.DataFrame({'a': [1,2,3], 'b': [[1,2,3],[2,3,4],[3,4,5]]})
我尝试做类似的事情:
dafr[dafr['b'].isin(2)]
哪些应该 return 具有列表的行:[1,2,3] & [2,3,4]。
不知这是否可行?
isin
returns 列值是否在您传递的内容中。您想检查您传递的内容是否在列值中。
据我所知,没有直接的快捷方式,但您可以使用 map
:
>>> dafr[dafr.b.map(lambda x: 2 in x)]
a b
0 1 [1, 2, 3]
1 2 [2, 3, 4]
dafr[dafr['b'].apply(lambda x: 2 in x)]
如果您将 b 存储为元组列而不是列表列,afr[dafr['b'].apply(lambda x: 2 in x)]
将执行得相当快。
import pandas as pd
dafr = pd.DataFrame({'a': [1,2,3], 'b': [[1,2,3],[2,3,4],[3,4,5]]})
我尝试做类似的事情:
dafr[dafr['b'].isin(2)]
哪些应该 return 具有列表的行:[1,2,3] & [2,3,4]。
不知这是否可行?
isin
returns 列值是否在您传递的内容中。您想检查您传递的内容是否在列值中。
据我所知,没有直接的快捷方式,但您可以使用 map
:
>>> dafr[dafr.b.map(lambda x: 2 in x)]
a b
0 1 [1, 2, 3]
1 2 [2, 3, 4]
dafr[dafr['b'].apply(lambda x: 2 in x)]
如果您将 b 存储为元组列而不是列表列,afr[dafr['b'].apply(lambda x: 2 in x)]
将执行得相当快。