Я действительно новичок в кодировании и пытаюсь найти краткий способ обработки некоторых смоделированных потоковых данных для сравнения с реальными измеренными значениями. У меня есть фрейм данных с измеренным потоком потока в одном столбце и смоделированным потоком потока в другом столбце. Проблема состоит в том, что 2 из смоделированных потоковых потоков должны быть суммой нескольких других смоделированных потоковых потоков. Чтобы усложнить задачу, не все смоделированные потоки имеют измеренные значения для сравнения. Реальный набор данных больше, чем этот, и немного сложнее. Например, допустим, у меня есть следующий фрейм данных:
# create example data
data = {'Stream': ['str_1', 'str_2', 'str_3', 'str_4', 'str_5', 'str_6', 'str_7', 'str_8'], \
'BaseFlow':['NaN', 45, 214, 'NaN', 212, 32, 'NaN', 'NaN'], \
'ModeledFlow': [ 12.4, 33.1, 123.5, 223.8, 201.4, 45.0, 57.7, 15.3]}
# create a pandas dataframe
df = pd.DataFrame(data)
# Use 'Stream' column to index the df
df = df.set_index('Stream', inplace=False)
Допустим, что для 'str_3' ModeledFlow должна быть сумма самой себя, а 'str_2', в то время как ModeledFlow для 'str_5' должна быть сумма сама по себе плюс 'str_1', 'str_6' и 'str_7'.
В настоящее время я делаю следующее, создавая новый столбец CombinedFlow только с двумя значениями:
df.loc['str_3', 'CombinedFlow'] = \
(df.loc['str_3', 'ModeledFlow'] + \
df.loc['str_2', 'ModeledFlow'])
df.loc['str_5', 'CombinedFlow'] = \
(df.loc['str_5', 'ModeledFlow'] + \
df.loc['str_1', 'ModeledFlow'] + \
df.loc['str_6', 'ModeledFlow'] + \
df.loc['str_7', 'ModeledFlow'])
Затем мне нужно заменить значения ModeledFlow этих двух потоков суммированными значениями CombinedFlow для экспорта в CSV, а затем построить все значения, имеющие значение MeasuredFlow для сравнения. Я предполагаю, что мне нужно удалить эти строки со значениями NaN, а? Каков наилучший способ сделать этот процесс?
Кроме того, каждый смоделированный поток потока получен из отдельного выходного файла, который суммирует все значения дренажа для каждой ячейки и выводит массив numpy. Каждый массив numpy затем объединяется в один кадр данных pandas. Вот где показан пример, показанный выше. Эта часть автоматизирована для обработки любых дополнительных выходных файлов, которые могут быть добавлены в модель. Однако, если в модель будет добавлено больше потоков, возможно ли настроить процесс так, чтобы он мог обрабатывать новые данные потока, сохраняя только 2 столбца (BaseFlow и ModeledFlow) и удаляя CombinedFlow для окончательного анализа данных на графике?
Если кто-нибудь может придумать лучшее название вопроса, которое разъясняет то, что я спрашиваю, это также будет полезно!