我的数据框有很多列,但对于某些列来说,它们以与列名称相似的单词开头:
>>> 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 选择具有相似名称的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22473567/