gpt4 book ai didi

python - 如何在 Pandas 中对一列列表执行条件(考虑列表中的每个项目)

转载 作者:行者123 更新时间:2023-12-01 03:03:56 24 4
gpt4 key购买 nike

假设我有一列列表。如果列表在一组中至少有一个项目,我想保留该行,否则我想删除该行。

这是一个最小的例子

#create the df 
d={'range':list(range(0,3))}
df=pd.DataFrame(d)
l=[1, 2, 3]
m =[4, 5, 6]
n =[1, 7, 8]
df['var_list']=''
df['var_list'][0]=l
df['var_list'][1]=m
df['var_list'][2]=n
df.head(3)

结果
range   var_list
0 0 [1, 2, 3]
1 1 [4, 5, 6]
2 2 [1, 7, 8]

这是我想要使用的集合
setS = {1, 2}

我想要做的是,如果任何行的列表中有一个项目在集合中,则保留该行,否则删除该行。

所以这是想要的结果:
range   var_list
0 0 [1, 2, 3]
2 2 [1, 7, 8]

我试过的
df2 = df[df['var_list'].isin(setS)]

这是我得到的错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: unhashable type: 'list'

The above exception was the direct cause of the following exception:

SystemError Traceback (most recent call last)
<ipython-input-56-90ea3b42ebf3> in <module>()
----> 1 df2 = df[df['var_list'].isin(setS)]

2 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/series.py in isin(self, values)
4512 Name: animal, dtype: bool
4513 """
-> 4514 result = algorithms.isin(self, values)
4515 return self._constructor(result, index=self.index).__finalize__(self)
4516

/usr/local/lib/python3.6/dist-packages/pandas/core/algorithms.py in isin(comps, values)
478 comps = comps.astype(object)
479
--> 480 return f(comps, values)
481
482

/usr/local/lib/python3.6/dist-packages/pandas/core/algorithms.py in <lambda>(x, y)
454
455 # faster for larger cases to use np.in1d
--> 456 f = lambda x, y: htable.ismember_object(x, values)
457
458 # GH16012

pandas/_libs/hashtable_func_helper.pxi in pandas._libs.hashtable.ismember_object()

SystemError: <built-in method view of numpy.ndarray object at 0x7fcc893844e0> returned a result with an error set

最佳答案

一列列表不怎么pandas正常工作。您必须明确检查列表中的项目:

print (df[df["var_list"].transform(lambda x: bool(set(x)&sets))])

#
range var_list
0 0 [1, 2, 3]
2 2 [1, 7, 8]

关于python - 如何在 Pandas 中对一列列表执行条件(考虑列表中的每个项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com