我的数据框有很多列,但对于某些列,它们以与列名相似的词开头:
>>> 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/