У меня есть два кадра данных, которые я хотел бы объединить. Оба кадра данных были получены из измерений и считаны из сохраненных файлов 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](https://i.stack.imgur.com/8Qvp5.png)