пересчитывать фрейм данных по значениям, а не по фреймам времени / слияния - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть два кадра данных, которые я хотел бы объединить. Оба кадра данных были получены из измерений и считаны из сохраненных файлов CSV. Ниже приведен минимальный код:

import pandas as pd
df1 = pd.read_csv('file_charge.csv') #battery charging file
print(df1.head())
soc       volt
0  0.000052  46.489062
1  0.000246  46.600472
2  0.000537  46.714063
3  0.000833  46.823437
4  0.001125  46.919929
print(len(df1))
3052

df2 = pd.read_csv('file_discharge.csv') #battery discharging file
print(df2.head())
        volt       soc
0  56.064844  0.999797
1  55.608464  0.999458
2  55.236909  0.999117
3  54.908865  0.998753
4  54.639002  0.998398
print(len(df2))
2962

С данными временных рядов я обнаружил, что передискретизация и использование индекса datetime для слияния / объединения / конкатенации - это здорово. Я хочу создать общий файл, содержащий следующее: so c | volt_charge | volt_discharge | volt_average

Проблема, которую я вижу на данный момент, заключается в том, что кадры данных имеют разную длину, и я не знаю, как легко с ней справиться. (Как) Можно ли уменьшить (или даже увеличить) кадр данных с индексом цифр c?

До сих пор мои попытки объединить / объединить кадры данных не увенчались успехом. Использование pd.merge приводит к пустому результирующему кадру данных, тогда как pd.merge_ordered дает df, который имеет только 2 столбца (например, c и вольт), а не желаемые 3 (например, c, volt_1, volt_2), из которых можно создать дополнительный четвертый столбец (volt_avg = mean (volt_1, volt_2)).

В графическом плане: можно построить графики как df1, так и df2 на одних и тех же осях x и y, но я не буду Не знаю, как можно создать «визуальное» среднее для df1 и df2. Voltage versus state of charge, charge and discharge curves

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...