Prima ho inserito la serie Knownvalue
in una lista di numeri interi pari al suo valore troncato diviso per dieci (ad esempio 27.87 // 10 = 2). Questi bucket rappresentano il numero intero per la posizione della colonna desiderata. Poiché Knownvalue
si trova nella prima colonna, ne aggiungo uno a questi valori.
Successivamente, enumero attraverso questi valori bin che effettivamente mi danno coppie di tuple di indici interi di righe e colonne. Uso iat
per impostare il valore di queste posizioni pari a 1.
import pandas as pd
import numpy as np
# Create some sample data.
df_vals = pd.DataFrame({'Knownvalue': np.random.random(5) * 50})
df = pd.concat([df_vals, pd.DataFrame(np.zeros((5, 5)), columns=list('ABCDE'))], axis=1)
# Create desired column locations based on the `Knownvalue`.
bins = (df.Knownvalue // 10).astype('int').tolist()
>>> bins
[4, 3, 0, 1, 0]
# Set these locations equal to 1.
for idx, col in enumerate(bins):
df.iat[idx, col + 1] = 1 # The first column is the `Knownvalue`, hence col + 1
>>> df
Knownvalue A B C D E
0 47.353937 0 0 0 0 1
1 37.460338 0 0 0 1 0
2 3.797964 1 0 0 0 0
3 18.323131 0 1 0 0 0
4 7.927030 1 0 0 0 0
(Nota: il testo è molto più comodo delle immagini, perché è possibile copiare e incollare testo. Di conseguenza sono tornato alle versioni di testo.) – DSM