Заменить подмножество строк информационного кадра A на строки информационного кадра B в пандах Python - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь заменить значения в строках от 500 до 750 в столбце col1 в фрейме данных df_A на столбец значений col1 в фрейме данных df_B (всего 250 строк) в Python Pandas.

Я пытался сделать это следующим образом

df_A.col1.iloc[500:750] = df_B.col1

Но это приводит к пресловутым

A value is trying to be set on a copy of a slice from a DataFrame

и значения в df_A.col1.iloc[500:750] заменяются на NaN s.Так как же я могу выполнить такую ​​замену нескольких строк строками из другого блока данных в Pandas без использования цикла for?

1 Ответ

0 голосов
/ 01 июня 2018

Попробуйте вместо этого использовать loc:

import pandas as pd
df=pd.DataFrame(np.arange(15).reshape(5,3), columns=['a0','a1','a2'])
dg=pd.DataFrame(np.arange(9).reshape(3,3), columns=['b0','b1','b2'])
print('df=', df)
print('\ndg=', dg)

#replacement of [5,8,11] by [1,4,7]
df.loc[1:3, 'a2']=dg.b1.values
print("\ndf (after replacement) \n ",df)
df=    a0  a1  a2
0   0   1   2
1   3   4   5
2   6   7   8
3   9  10  11
4  12  13  14

dg=    b0  b1  b2
0   0   1   2
1   3   4   5
2   6   7   8

df (after replacement) 
     a0  a1  a2
0   0   1   2
1   3   4   1
2   6   7   4
3   9  10   7
4  12  13  14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...