Панды: Невозможно записать значения в однорядный фрейм данных - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть один ряд данных (df), в который я хочу вставить значение для каждого столбца, используя только номера индексов. Фрейм данных df имеет следующую форму.

 a b c
1 0 0 0
2 0 0 0
3 0 0 0

df.iloc[[0],[1]] = predictions[:1]

Это дает мне следующее предупреждение и ничего не записывает в строку:

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

Однако, когда я пытаюсь использовать

pred_row.iloc[0,1] = predictions[:1]

Это дает мне ошибку

ValueError: Incompatible indexer with Series

Есть ли способ записать значение в однострочный кадр данных. Предсказания - это любое случайное значение, которое я пытаюсь установить в определенной ячейке df

1 Ответ

0 голосов
/ 12 ноября 2018

Для установки одного элемента из Series в DataFrame измените выбор на predictions[0]:

print (df)
   a  b  c
1  0  0  0
2  0  0  0
3  0  0  0

predictions = pd.Series([1,2,3])
print (predictions)
0    1
1    2
2    3
dtype: int64

df.iloc[0, 1] = predictions[0]
#more general for set one element of Series by position
#df.iloc[0, 1] = predictions.iat[0]
print (df)
   a  b  c
1  0  1  0
2  0  0  0
3  0  0  0

подробности :

#scalar 
print (predictions[0])
1

#one element Series
print (predictions[:1])
0    1
dtype: int64

Также работает преобразование одного элемента Series в один массив элементов, но установить его скаляром проще:

df.iloc[0, 1] = predictions[:1].values
print (df)
   a  b  c
1  0  1  0
2  0  0  0
3  0  0  0

print (predictions[:1].values)
[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...