2016-04-12 2 views
1

У меня есть 2 кадра данных pandas. Второй из них содержится в первом. Как я могу заменить значения в первом из них во втором?Обновление значений с помощью другого фрейма данных

рассмотрим следующий пример:

df1 = pd.DataFrame(0, index=[1,2,3], columns=['a','b','c']) 
df2 = pd.DataFrame(1, index=[1, 2], columns=['a', 'c']) 

ris= [[1, 0, 1], 
     [1, 0, 1], 
     [0, 0, 0]] 

и ris имеет тот же индекс и столбцов d1

Возможное решение:

for i in df2.index: 
    for j in df2.columns: 
    df1.loc[i, j] = df2.loc[i, j] 

Но это некрасиво

ответ

1

Я думаю, что вы можете использовать copy с combine_first:

df3 = df1.copy() 
df1[df2.columns] = df2[df2.columns] 
print df1.combine_first(df3) 
    a b c 
1 1.0 0 1.0 
2 1.0 0 1.0 
3 0.0 0 0.0 

Следующая решение создает новый пустой DataFramedf4 с index и columns от df1 и заполните его двойным combine_first:

df4 = pd.DataFrame(index=df1.index, columns=df1.columns) 
df4 = df4.combine_first(df2).combine_first(df1) 
print df4 
    a b c 
1 1.0 0.0 1.0 
2 1.0 0.0 1.0 
3 0.0 0.0 0.0 
0

Try

In [7]: df1['a'] = df2['a'] 

In [8]: df1['c'] = df2['c'] 

In [14]: df1[['a','c']] = df2[['a','c']] 

Если имена столбцов не известны:

In [25]: for col in df2.columns: 
    ....:  df1[col] = df2[col] 
+0

Рассмотрите случай со многими колонками – Donbeo

Смежные вопросы