Saya memiliki df yang terdiri dari 3 kolom dan 5 baris. Saya ingin membuat kolom baru ke dalam file df. Meskipun kodenya harus dinamis karena kolom dan barisnya bisa berubah-ubah.

k=4
for o in range(0,3):
    for p in range(0,k):
        df[f'w'{op}]=0

Jadi dalam hal ini kolom yang harus saya buat harus: w11, w12, w21, w22, w31, w32

Output dari kode di atas

  criterion 1 criterion 2 criterion 3  w
0        very        none      little  0
1      little        very        very  0
2        none        none        very  0
3        very        none        none  0
4        very        none      little  0
5        none        none      little  0
1
Annie S. 20 November 2020, 20:57

1 menjawab

Jawaban Terbaik

Baris df[f'w'{op}]=0 tampaknya salah dalam cuplikan kode.

Itu harus ditulis dengan cara seperti df[f'w{o}{p}']=0.

Coba contoh kode di bawah ini dan terapkan dalam skenario Anda,

# Create sample dataframe with shape (10,3)
df = pd.DataFrame(np.array(range(30)).reshape(10,3))

# Set the inputs as required in the column names and put it in loop

n_prefix = 3
n_suffix = 2

for pr in range(1,n_prefix+1):
    for sf in range(1,n_prefix+1):
        df[f"W{pr}{sf}"]= f"val{pr}_{sf}"

print(df.head(2))


0   1   2   W11     W12     W21     W22     W31     W32 
0   1   2   val1_1  val1_2  val2_1  val2_2  val3_1  val3_2
3   4   5   val1_1  val1_2  val2_1  val2_2  val3_1  val3_2
0
Saravanakumar V 20 November 2020, 18:22