Python 如何找到具有类似关键字的数据帧索引?

Python 如何找到具有类似关键字的数据帧索引?,python,excel,pandas,Python,Excel,Pandas,我目前正在创建一个数据库,其中的表是由excel工作簿中的特定列组成的。该算法在目录中迭代,并将工作表保存为数据帧,然后从中选择列: df1 = pd.read_excel(file, 'sheet1') 从那里我选择了我需要的数据 def create_list(df1): i = 0 list1 = [] while isinstance(df1['foo-bar'][i], int): list1.append(df1['foo-bar'][i]

我目前正在创建一个数据库,其中的表是由excel工作簿中的特定列组成的。该算法在目录中迭代,并将工作表保存为数据帧,然后从中选择列:

df1 = pd.read_excel(file, 'sheet1')
从那里我选择了我需要的数据

def create_list(df1):
    i = 0
    list1 = [] 
    while isinstance(df1['foo-bar'][i], int):
        list1.append(df1['foo-bar'][i])
        i += 1
    return list1
我面临的问题是,有时列的名称不是'foo-bar',而是'foo.bar'。例如,如果该列包含“foo”,是否有方法选择该列?还是选择“foo-bar”或“foo.bar”的“Or”运算符


我知道应该有一种方法可以使用sql中的LIKE,但我更喜欢使用pandas。

您可以使用
DataFrame.filter
这种方法。。。由于df1是一个数据帧:

    df1 = df1.filter(regex=("^foo.*"))
然后你可以使用它里面的所有列

这叫做正则表达式


^foo.*表示以foo开头,以任意长度(“*”)的字符(“.”)结尾的字符串

您在迭代文件吗?如果是的话。。你应该做i+=1对吗?
df.filter(like='foo')
对你有用吗?这将返回一个df,其中的列包含…@GabrielM你是对的,我忘了把它放在代码上了。@JonClements你是对的,这已经有助于lotit与
df.filter(like='foo'和'bar)完美配合使用了
如果它将使用名称以foo开头的所有列
regex=
使用
re.search
-那么为了确保名称以“foo”开头,您需要锚定regex,例如:
regex='^foo'
,如何指定它应该结束的字符或字符串?在本例中,强制它以“foo”开头,以“bar”结尾?我在regex中找到了,但在那里它显示“$”作为结尾
import re

regex = re.compile("^foo.*")

columnsThatYouWant = []

for i in dataframe.columns:

    if bool(regex.match(i))):
        columnsThatYouWant.append(i)