Обновление данных из другого не работает - PullRequest
0 голосов
/ 29 января 2019

Я много раз использовал следующий подход, и он прекрасно работает, когда кто-то хочет обновить значения в одном кадре данных из другого.Тем не менее, у меня есть два кадра данных, которые не хотят работать.Ниже приведены шаги, которым я следую.Я не могу понять, почему это не работает.Что мне не хватает?Может кто-то может указать мне на возможные причины, которые я мог бы исследовать:

Исходное значение для "mydate" не найдено в df:

print(df.loc[df.FileName == '100212']['mydate'])
Out:
406    'not found'
Name: mydate, dtype: object

Мое значение "новой даты" из lookup df1is '10 -2-1997'

print(df1.loc[df1.FileName == '100212']['new date']
Out:
2766    10-2-1997
Name: new date, dtype: object

Следующее должно обновить "mydate" в df на "new date" в df1:

df.loc[df.FileName.isin(df1.FileName), ['mydate']] = df1['new date']

Но вместо '10 -2-1997 'Я получаю' NaN ':

print(df.loc[df.FileName == '100212']['mydate'])
Out:
406    'NaN'
Name: mydate, dtype: object

1 Ответ

0 голосов
/ 29 января 2019

Серийное присвоение выполняется по индексу .Но индексы не совпадают между двумя вашими данными.Вместо серии можно использовать pd.Series.map:

series_map = df1.set_index('FileName')['new date']
df['mydate'] = df['FileName'].map(series_map).fillna(df['mydate'])

Использование fillna впоследствии гарантирует, что df['mydate'] останется неизменным, если имена файлов не общие междудва кадра данных.

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