Saya ingin mengatur N baris pertama dari kerangka data panda yang memenuhi suatu kondisi. Misalnya untuk:

data = {'id':[1,1,2,2,2,4,2,2], 'val':[9,9,9,9,9,9,9,9]}
df = pd.DataFrame(data)

Bila saya lakukan:

df.loc[df.id == 2] = None

Saya mengatur semua baris dengan id == 2, tetapi saya hanya ingin mengatur N dari mereka.

Saya sudah mencoba

df.loc[df.id == 2][range(N)] = None

Tapi tidak berhasil.

Apakah ada cara untuk melakukan ini, tanpa menggunakan loop?

2
Mich55 10 Juli 2020, 06:47

1 menjawab

Jawaban Terbaik

IIUC, gunakan pandas.DataFrame.loc dua kali. Tidak begitu cantik, tetapi berfungsi:

df.loc[df.loc[df["id"].eq(2)].index[:2]]=None
print(df)

Keluaran:

    id  val
0  1.0  9.0
1  1.0  9.0
2  NaN  NaN
3  NaN  NaN
4  2.0  9.0
5  4.0  9.0
6  2.0  9.0
7  2.0  9.0
1
Chris 10 Juli 2020, 03:55