У меня есть 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']. Т делает трюк, но он вовлекает два транспозиции. Нельзя ли это сделать непосредственно на столбцах?
попробуйте этот код:
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()
если ваши столбцы являются объектами datetime.date, попробуйте:
df.loc[:, '2006-01-01':'2006-12-31']