Выберите подмножества дат в колонках Pandas

1

У меня есть pandas DataFrame с datetime.time по индексу и datetime.date в столбцах. Например

df =

          2006-02-01  2006-02-02     ...      2006-05-29  2009-06-01
08:00:00     1.45685     1.43830     ...         1.41020     1.42045
08:00:01     1.45685     1.43825     ...         1.41030     1.42040
08:00:02     1.45685     1.43810     ...         1.41025     1.42050
08:00:03     1.45685     1.43825     ...         1.41025     1.42060
...

Я хотел бы выбрать только столбцы с 2006 года. Как мне сделать это проще всего и быстрее?

Я нашел df.T ['2006']. Т делает трюк, но он вовлекает два транспозиции. Нельзя ли это сделать непосредственно на столбцах?

  • 1
    Являются ли ваши имена столбцов строками или типом типа datetime?
  • 0
    они являются объектами datetime.date
Показать ещё 2 комментария
Теги:
pandas
datetime

2 ответа

1

попробуйте этот код:

def getSubsetColumnsByYear(dataframe, year):
    df = dataframe
    try:
        startAt = df.columns.get_loc(year + '-01-01')
        endAt = df.columns.get_loc(year + '-12-31')

        return df[df.columns[startAt:endAt+1]]
    except KeyError:
        print('Not a valid year')


def testMethod():
    import pandas as pd
    data = { '2016-01-01':[1,1,1], '2016-01-02':[2,2,2], '2016-01-03':[3,3,3], '2016-01-04':[4,4,4], '2016-12-31':[31,31,31], '2017-01-01':[2,2,2],}
    df = pd.DataFrame(data=data)

    newdf = getSubsetColumnsByYear(df, '2016')
    print(newdf)

testMethod()
  • 0
    Полезный фрагмент, хорошая работа!
1

если ваши столбцы являются объектами datetime.date, попробуйте:

df.loc[:, '2006-01-01':'2006-12-31']
  • 0
    Я хотел бы использовать только указатель года (например, 2006), как вы можете сделать в индексе. Любопытно, что это можно сделать и на cols.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню