#python #insert #limit #cumsum
Вопрос:
у меня есть фрейм данных, который выглядит так:
Он содержит дату, год и среднюю температуру воздуха (T_mean) с 01.01.1937 по 31.12.2020.
Я хочу суммировать «T_mean» за каждый год. В точке, где «T_mean» достигает или пересекает «200«, Я хочу узнать дату, когда это произойдет.
До сих пор я могу суммировать «T_mean» с Sum_T_mean = np.cumsum(dataset['T_mean'])
К сожалению, это суммирует ВСЕ «T_mean» с 1937 по 2020 год.
Поэтому я хотел добавить такой цикл:
if i in dataset['Year'] == 1937:
Sum_1937 = np.cumsum(dataset['T_mean'])
и добавьте новый столбец с суммой T_mean из 1937 года с:
dataset.insert(3, "Sum_1937", Sum_1937, allow_duplicates=False)
Это тоже не работает.
Если бы коды работали, я мог бы напечатать дату, когда, например, «Sum_1937» достигает или пересекает 200 с:
limit = 200
1937_over = dataset[dataset['Sum_1937'] >= limit]
1937_over.head(1)
Конечно, это не самый элегантный способ, потому что мне нужно повторять его каждый год, но пока я не могу найти более быстрый способ.
Спасибо за любые советы!
Для создания небольшого фрейма данных вы можете использовать:
Date = [19370101, 19370102, 19370103, 19370104, 19370105, 19370106]
Year = [1937, 1937, 1937, 1937, 1937, 1937]
T_mean = [5.8, 5.6, 9.2, 8.0, 4.3, 6.4]
df = pd.DataFrame(Date, columns = ['Date'])
df.insert(1, "Year", Year, allow_duplicates=False)
df.insert(2, "T_mean", T_mean, allow_duplicates=False)
Мой желаемый результат должен выглядеть следующим образом:
Я хотел бы добавить столбец за каждый год (1937-2020), чтобы вычислить точку, в которой T_mean каждого года достигает или пересекает 200.
Комментарии:
1. Было бы мило с вашей стороны предоставить образец фрейма данных в форме, которую мне не нужно вводить вручную.
2. В любом случае,
df.groupby('Year')['T_mean'].transform('cumsum')
?3. Пожалуйста, отредактируйте свой вопрос, чтобы добавить код.
4. Я добавил код к своему вопросу, чтобы создать образец фрейма данных
![]()
5. Я прошу прощения. Надеюсь, теперь моя правка стала лучше.