Pandas Обновление файла / замена значений из другого справочного файла - PullRequest
0 голосов
/ 27 мая 2020

Пожалуйста, помогите мне с обновлением файла на основе значений из другого файла.

Я получил файл "todays_file1.csv" и ниже таблица:

name    day a_col   b_col   c_col
alex    22-05   rep 68  67
stacy   22-05   sme 79  81
penny   22-05   rep 74  77
gabbi   22-05   rep 59  61

Итак, мне нужно обновить значения только из ['day', 'b_col', 'c_col'] во второй файл "my_file.csv ", в котором слишком много других столбцов.

name    day a_col   a_foo   b_col   b_foo   c_col
penny   21-May  rep 2   69  31  69
alex    21-May  rep 2   71  34  62
gabbi   21-May  rep 1   62  32  66
stacy   21-May  sme 3   73  38  78

Код, который у меня есть, приведен ниже:

df1 = pd.read_csv("todays_file1.csv")
df2 = pd.read_csv("my_file.csv")
df2.replace(to_replace=df2['day', 'b_col', 'c_col'], value= df1['day', 'b_col', 'c_col'], inplace=True)

Пожалуйста, помогите, как заменить 3 столбцы на основе столбца 'name', который является общим для обоих, но может быть беспорядочным.

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "D:\TESTING\Trial.py", line 93, in <module>
    df2.replace(to_replace=df2['day', 'b_col', 'c_col'], value= df1['day', 'b_col', 'c_col'], inplace=True)
  File "C:\Winpy\WPy64-3770\python-3.7.7.amd64\lib\site-packages\pandas\core\frame.py", line 2800, in __getitem__
    indexer = self.columns.get_loc(key)
  File "C:\Winpy\WPy64-3770\python-3.7.7.amd64\lib\site-packages\pandas\core\indexes\base.py", line 2648, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas\_libs\index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas\_libs\hashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas\_libs\hashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: ('day', 'b_col', 'c_col')

1 Ответ

1 голос
/ 27 мая 2020

"anky" предоставил решение через комментарии, и я всегда благодарен.

Код ниже помогает решить проблему.

df1 = pd.read_csv("todays_file1.csv")
df2 = pd.read_csv("my_file.csv")
df1.set_index('name')
df2.set_index('name')
df2.update(df1)
df2.to_csv("my_file.csv", index=False)

Еще раз спасибо Anky:)

...