Pandas 查找包含列表的列

Pandas 查找包含列表的列,pandas,dataframe,Pandas,Dataframe,我有一个150000 x 330的大熊猫数据帧,我可以找到包含列表的列[] 我试过了 df['[]'在x中代表df.values中的x]] 但它只返回列名 df['FORM_SECTION.CONTRACT.FD_CONTRACT.CONTRACTING_AUTHORITY_INFORMATION.NAME_ADDRESSES_CONTACT_CONTRACT.SPECIFICATIONS_AND_ADDITIONAL_DOCUMENTS.CONTACT_DATA.E_MAILS.E_MAIL

我有一个150000 x 330的大熊猫数据帧,我可以找到包含列表的列
[]

我试过了

df['[]'在x中代表df.values中的x]]
但它只返回列名

df['FORM_SECTION.CONTRACT.FD_CONTRACT.CONTRACTING_AUTHORITY_INFORMATION.NAME_ADDRESSES_CONTACT_CONTRACT.SPECIFICATIONS_AND_ADDITIONAL_DOCUMENTS.CONTACT_DATA.E_MAILS.E_MAIL'] 

0         [dsfd@inventura.no]
1                        [---@sivingtt.no]
2                                     None
3                                     None
4                                     None
                        ...               
152463                                None
152464                                None
152465                                None
152466                                None
152467                                None
Name: FORM_SECTION.CONTRACT.FD_CONTRACT.CONTRACTING_AUTHORITY_INFORMATION.NAME_ADDRESSES_CONTACT_CONTRACT.SPECIFICATIONS_AND_ADDITIONAL_DOCUMENTS.CONTACT_DATA.E_MAILS.E_MAIL, Length: 152468, dtype: object

您正在检查x中的字符串“[]”,而不是列表。尝试检查类型(x)==列表

我认为它看起来像(可能在语法上不完全正确):


考虑这个数据帧:

abc
0   1  1   1
1   2  2  []
2  []  3   3
3   3  4   4
然后,要选择
[]
所在的列,可以执行以下操作:

print(df.loc[:,df.apply(x.tolist()中的lambda x:[]))
印刷品:

ac
0   1   1
1   2  []
2  []   3
3   3   4
您可以尝试:

df.applymap(lambda x: isinstance(x, list)).any()
演示 您还可以找到包含列表的列的列表,如下所示:

df.columns[df.applymap(lambda x: isinstance(x, list)).any()].tolist()
输出:

['Col2']

对于列表中的i_cols:print(i),这将打印每一列mpty DataFrame列:[]索引:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,90,91,92,93,94,95,96,97,98,99,][152468行x 0列]@BjørnJørgensen你能编辑你的问题并把数据放在那里吗?格式正确。嗯,这是一个由JSON制成的大数据框。我从arangodb.df.columns[df.applymap(lambda x:isinstance(x,list)).any()]中得到它。tolist()这段代码确实打印了那些有列表的列。df.columns[df.applymap(lambda x:isinstance(x,list))。any()]。tolist()确实给了我一个列表:)tnx@BjørnJørgensen很乐意帮忙!请记住:-)
df.columns[df.applymap(lambda x: isinstance(x, list)).any()].tolist()
['Col2']