Я извлекаю данные из многих файлов CSV и сохраняю их в один файл.Этот процесс повторяется, и время от времени у меня появляются новые версии файлов, поэтому необходимо обновить базовые данные.Мне трудно получить нужные данные.Вот пример того, что я пытаюсь сделать:
старый файл (/old/Test1.csv)
tests col1 col2 col3
test1 11 8 5
test3 9 5 7
test5 12 9 -1
новый файл (/new/Test1.csv)
)
tests col2 col3 col4
test1 8 7 15
test3 5 9 10
test7 1 4 9
test9 11 10 12
Обратите внимание, что в новом файле col1 отсутствует, есть новый столбец col4, строка test5 отсутствует и есть две новые строки test7 и test9.Требуемый вывод должен:
- содержать все столбцы и строки из test1.csv и test2.csv
- включать обновленные данные в test2.csv для пар (row, col) из test1.csv
- Если нет обновлений пар (row, col) из test1.csv, то следует использовать данные в test1.csv.
- Все пустые ячейки в обновленном файле должны быть заполнены 0.
Для данных, показанных выше, это должен быть обновленный файл (Test1_update.csv)
tests col1 col2 col3 col4
test1 11 8 7 15
test3 9 5 9 10
test5 12 9 -1 0
test7 0 1 4 9
test9 0 11 10 12
Я могу добраться до этой точки, используя код ниже:
tests col1 col2 col3 col4
test1 Nan 8 7 15
test3 Nan 5 9 10
test5 Nan Nan Nan Nan
test7 Nan 1 4 9
test9 Nan 11 10 12
import pandas as pd
import numpy as np
df1 = pd.read_csv('\\dir\\test1.csv', index_col=0)
df2 = pd.read_csv('\\dir\\test2.csv', index_col=0)
new_index = list(set(list(df1.index.values)+list(df2.index.values)))
new_cols = list(set(list(df1.columns.values)+list(df2.columns.values)))
df3 = pd.DataFrame(index=new_index, columns=new_cols)
df4 = df2.reindex(df3.index)
df4 = df4.join(df3, rsuffix='_P')
df4 = df4.loc[:,~df4.columns.str.endswith('_P')]
print df4