Python 熊猫:如何打印包含列表中指定元素的行

Python 熊猫:如何打印包含列表中指定元素的行,python,pandas,list,Python,Pandas,List,我有一个看起来像这样的数据帧(示例): 首先,我想获得所有列表中最频繁出现的对。 例如: (ab,cv) 2 (da,ndfds) 1 .......... 例如,我希望能够调用第3列中包含条目(ab,cv)的所有行 这方面的预期产出将是: column1 column2 column3 xyz 123 [(ab,cv), (da,ndfds)] dsja 32421 [(a

我有一个看起来像这样的数据帧(示例):

首先,我想获得所有列表中最频繁出现的对。 例如:

 (ab,cv)    2
 (da,ndfds) 1
 ..........
例如,我希望能够调用第3列中包含条目(ab,cv)的所有行

这方面的预期产出将是:

 column1     column2            column3
  xyz         123         [(ab,cv), (da,ndfds)]
  dsja        32421            [(ab,cv)]
  .....................      
IIUC

数据输入

df=pd.DataFrame({'col1':['x','y','z'],'col3':[[('ab','cv'), ('da','ndfds')],[('ab','cv')],[('dsfsa','sfa'), ('sd','sfag')]]})
l=[('ab','cv'),('da','ndfds')]
这应该做到:

df[('ab','cv') in l for l in df.column3]
    column1 column2 column3
0   xyz 123 [(ab,cv),(da,ndfds)]
1   dsja    32421   [(ab,cv)]

首先是一个一般性的评论:Pandas很神奇,但是当你开始在列中的列表中使用元组时,它可能不再是正确的工具了。Pandas是为表格数据而设计的,您所处理的显然是更结构化的

尽管如此,这是我的解决方案

首先,让我们创建
数据帧
(这样示例就可以生成):

将熊猫作为pd导入
df=pd.DataFrame({
“col_1”:['xyz','dsja','dgsag'],
“col_2”:[123324213252],
“col_3”:[
[('ab','cv'),('da','ndfds'),
[('ab','cv')],
[('dsfsa','sfa'),('sd','sfag')]]
})

>>df
第1列第2列第3列
0 xyz 123[(ab,cv),(da,ndfds)]
1 dsja 32421[(ab,cv)]
2 dgsag 3252[(dsfsa,sfa),(sd,sfag)]
现在,通过
集合计数事件很容易。计数器
,您需要首先连接所有这些列表:

从集合导入计数器
计数器(t代表df中的行['col_3']代表t代表df中的行)
计数器({('ab','cv'):2,
('da','ndfds'):1,
('dsfsa','sfa'):1,
('sd','sfag'):1})
您获得的
计数器
对象有一个
最常见的
方法,该方法接受您想要的项数作为参数(例如,最常见的3次出现)

现在,第二点是逻辑索引。您可以通过
loc
索引,并(根据以下其他答案进行改进)使用生成器进行比较:

t=('ab','cv')
df.loc[(t在l中表示l在df中['col_3']),:]
第1列第2列第3列
0 xyz 123[(ab,cv),(da,ndfds)]
1 dsja 32421[(ab,cv)]

到目前为止,您有没有尝试过的代码?
df=pd.DataFrame({'col1':['x','y','z'],'col3':[[('ab','cv'), ('da','ndfds')],[('ab','cv')],[('dsfsa','sfa'), ('sd','sfag')]]})
l=[('ab','cv'),('da','ndfds')]
df[('ab','cv') in l for l in df.column3]
    column1 column2 column3
0   xyz 123 [(ab,cv),(da,ndfds)]
1   dsja    32421   [(ab,cv)]