#python #pandas #dataframe #csv
#python #pandas #dataframe #csv
Вопрос:
У меня есть csv-файл, который состоит из значений температуры с интервалом в 2 минуты в течение 3 месяцев. Первые 5 строк можно увидеть ниже.
T1C T2C T1-T2C U1 U2 Date year month day
0 NaN NaN NaN NaN NaN 2020-04-25 2020 4 25
1 NaN NaN NaN NaN NaN 2020-04-25 2020 4 25
2 NaN NaN NaN NaN NaN 2020-04-25 2020 4 25
3 8,932 6,703 2,229 0,018 0,018 2020-04-25 2020 4 25
4 9,083 6,799 2,284 0,018 0,018 2020-04-25 2020 4 25
Я хочу получить максимальные значения в T1C и минимальные значения в T2C для каждого дня. Должен ли я сделать это с помощью groupby, я не мог придумать, как это сделать. Заранее спасибо.
Комментарии:
1. Вы можете попробовать создать цикл. Для каждой итерации вы заменяете значение, если оно меньше (T2C) или больше (T1C), чем предыдущее.
Ответ №1:
Вы можете использовать это:
result = df.groupby('Date').agg({'T1C': 'max', 'T2C': 'min'})
Комментарии:
1. Вероятно, потребуется убедиться, что T1C и T2C на самом деле являются числовыми значениями… они выглядят так, как будто они, вероятно, являются строками в примере
2. Спасибо, это сработало, но по какой-то причине я получаю значение ‘inf’ для минимального значения, может быть, это из-за отрицательных значений?
Ответ №2:
Я буду группировать Day
, а затем агрегировать:
df.groupby('day').agg({'T1C': 'max', 'T2C': 'min'})
Комментарии:
1. Да, это помогло, но я получаю значение ‘inf’ для минимального значения. Есть идеи, почему?