我的数据框有很多列,但对于某些列,它们以与列名相似的词开头:

>>> df.columns
Index([u'VESSELTYPE', u'VESSELNAME', u'PERIODSTART', u'PERIODEND', u'ESTREDELI', u'HIRE', u'DAYS Mar-14', u'DAYS Q2 2014', u'DAYS Q3 2014', u'DAYS Q4 2014', u'DAYS Q1 2015', u'DAYS Q2 2015', u'DAYS Q3 2015', u'DAYS Q4 2015', u'NUMDAYS'], dtype='object')
>>>


看到这里,我想选择前面带有“ DAYS”的所有内容,是否有类似SQL的东西,我可以使用*表示“ DAYS”之后的所有内容?

最佳答案

尝试使其适应您的代码。

l = ([u'VESSELTYPE', u'VESSELNAME', u'PERIODSTART', u'PERIODEND', u'ESTREDELI', u'HIRE', u'DAYS Mar-14', u'DAYS Q2 2014', u'DAYS Q3 2014', u'DAYS Q4 2014', u'DAYS Q1 2015', u'DAYS Q2 2015', u'DAYS Q3 2015', u'DAYS Q4 2015', u'NUMDAYS'], 'AnotherItem')

days = [s for s in l[0] if s.startswith('DAYS')]
print days


您可以对所有字符串使用“ startswith()”方法,并对其进行逻辑处理。

如果您不喜欢list-comprehensions,则在for循环中等效:

days = []
for s in l[0]:
    if s.startswith('DAYS'):
        days.append(s)

print days

关于python - Python选择名称相似的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22473567/

10-13 00:03