简体   繁体   中英

pandas: Unable to write values to single row dataframe

I have a single row dataframe(df) on which I want to insert value for every column using only the index numbers. The dataframe df is in following form.

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

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

This gives me the following warning and does not write anything to the row:

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

However when I try using

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

It gives me error

ValueError: Incompatible indexer with Series

Is there a way to write value to single row dataframe. Predictions is any random value that I am trying to set in a particular cell of df

For set one element of Series to DataFrame change selecting to 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

Details :

#scalar 
print (predictions[0])
1

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

Also working convert one element Series to one element array, but set by scalar is simplier:

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]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM