最近朋友咨询一下怎么查询包含某些元素的行,但列是不固定的,有的列多,有的列少,列名也是不固定的。思路其实就是构造列名,然后还是按列进行遍历求出行,如果有人有更直接的方法,可以让我学习一下哈。

import pandas as pd

"""
把一行为单位的称为“条目”,把一个格子为单位的称为“元素”,
我的需求是:只要整个表格里,有任何一个元素能够匹配到product_list里的元素,
我想提取匹配到的元素所在的那个条目(那一行)。
问题是:下载下来的表格比较杂乱,行列数不一样,有的还有空行或者空列,几乎所有的表格都没有列名,我无法添加列名,
而在无列名的情况下用isin(),会得出一堆nan
"""

product_list = [ 'p_1', 'p_2', 'p_3' ]

df = pd.read_csv(r'cleaning_test.csv')

names= ['column_{}'.format(i) for i in range(df.shape[1])]
df.columns = names

print(names)
list_df=[]
for cllumn_name in names:
new_df = df[df[cllumn_name].isin(product_list)]
list_df.append(new_df)

final_df = pd.concat(list_df,axis=0)
print(final_df.head())