У меня есть серия JSON файлов. Все последующие файлы содержат частично перекрывающиеся данные с предыдущим. Как показано в примере ниже, последние 3 строки первого файла имеют те же временные метки, что и первые 3 строки второй таблицы.
Первый файл:
wind_v wind_u dewpoint temp rh
hours
1555038000000 -1.412255 -0.023800 283.15000 284.15000 24.53871
1555048800000 -0.164115 -1.692985 284.32549 286.47823 21.82451
1555059600000 0.055155 -2.692985 285.04983 288.09226 21.82451
1555070400000 -2.412255 -0.857100 284.26031 286.47823 33.66288
1555081200000 -1.192985 -0.055155 284.15000 285.15000 30.98614
1555092000000 -0.857100 0.114030 283.71146 284.32549 37.11403
Второй файл:
wind_v wind_u dewpoint temp rh
hours
1555070400000 -0.0572 3.4300 210.152144 292.03969 79.8188
1555081200000 0.4200 4.7622 207.006067 291.71146 83.1700
1555092000000 1.1578 -1.2322 205.239848 294.32549 73.7388
1555102800000 0.1750 0.9200 205.420127 297.86420 83.2532
1555113600000 0.2778 2.6106 206.944729 297.03969 82.2800
1555124400000 -2.4828 3.3722 208.115948 296.15000 83.7500
Я хотел бы объединить все файлы в один файл и перезаписать значения самыми последними значениями.
import pandas as pd
import json
import os
directory = './'
fileNames = [x for x in os.listdir(directory) if x.endswith(".json")]
fileNames = sorted(fileNames)
# Open first 2 files
with open(directory + fileNames[0]) as file1, open(directory + fileNames[1]) as file2:
data2 = json.load(file2)
df2 = pd.DataFrame(data2['data'])
df2.set_index('hours', inplace=True, drop=True)
data1 = json.load(file1)
df1 = pd.DataFrame(data1['data'])
df1.set_index('hours', inplace=True, drop=True)
print(df1)
print(df1)
# This does not work either
result = pd.merge(df1, df2, how='outer', on='hours')
print(result)
Что делает мой код:
wind_v_x wind_u_x dewpoint_x temp_x rh_x wind_v_y wind_u_y dewpoint_y temp_y rh_y
hours
1555038000000 -1.412255 -0.023800 283.15000 284.15000 24.53871 NaN NaN NaN NaN NaN
1555048800000 -0.164115 -1.692985 284.32549 286.47823 21.82451 NaN NaN NaN NaN NaN
1555059600000 0.055155 -2.692985 285.04983 288.09226 21.82451 NaN NaN NaN NaN NaN
1555070400000 -2.412255 -0.857100 284.26031 286.47823 33.66288 -0.0572 3.4300 210.152144 292.03969 79.8188
1555081200000 -1.192985 -0.055155 284.15000 285.15000 30.98614 0.4200 4.7622 207.006067 291.71146 83.1700
1555092000000 -0.857100 0.114030 283.71146 284.32549 37.11403 1.1578 -1.2322 205.239848 294.32549 73.7388
1555102800000 NaN NaN NaN NaN NaN 0.1750 0.9200 205.420127 297.86420 83.2532
1555113600000 NaN NaN NaN NaN NaN 0.2778 2.6106 206.944729 297.03969 82.2800
1555124400000 NaN NaN NaN NaN NaN -2.4828 3.3722 208.115948 296.15000 83.7500
Как я хочу, чтобы это было:
wind_v wind_u dewpoint temp rh
hours
1555038000000 -1.412255 -0.023800 283.15000 284.15000 24.53871
1555048800000 -0.164115 -1.692985 284.32549 286.47823 21.82451
1555059600000 0.055155 -2.692985 285.04983 288.09226 21.82451
1555070400000 -0.0572 3.4300 210.152144 292.03969 79.8188
1555081200000 0.4200 4.7622 207.006067 291.71146 83.1700
1555092000000 1.1578 -1.2322 205.239848 294.32549 73.7388
1555102800000 0.1750 0.9200 205.420127 297.86420 83.2532
1555113600000 0.2778 2.6106 206.944729 297.03969 82.2800
1555124400000 -2.4828 3.3722 208.115948 296.15000 83.7500
Любой намек поможет.