簡體   English   中英

更改第二行的值(熊貓數據框)

[英]Changing the values of every second row (pandas data frame)

我想將第二個值的第一列的行值更改為“綠色”,將其余的值更改為“紅色”(請參見下文,我從這里開始使用replace方法,但是效率不高) 。

    color   IntDen  Density Condition
0   green   936645  Low Ctrl
1   red 1571204 Low Ctrl
2   green   1154038 Low Ctrl
3   red 1423050 Low Ctrl
4   5   691283  Low Aß42
5   6   764449  Low Aß42
6   7   638492  Low Aß42
7   8   887382  Low Aß42
8   9   788693  Low H20
9   10  1401201 Low H20
10  11  936645  Low H20
11  12  1571204 Low H20
12  13  1122389 Low LPS
13  14  2262593 Low LPS
14  15  866009  Low LPS
15  16  1398048 Low LPS
16  17  960636  High    Ctrl
17  18  1939803 High    Ctrl
18  19  1994001 High    Ctrl
19  20  3399789 High    Ctrl
20  21  810265  High    Aß42
21  22  1113727 High    Aß42
22  23  1095145 High    Aß42
23  24  1402325 High    Aß42
24  25  1424273 High    H20
25  26  2771698 High    H20
26  27  1807418 High    H20
27  28  1265651 High    H20
28  29  2046300 High    LPS
29  30  1225662 High    LPS
30  31  1755320 High    LPS
31  32  1425662 High    LPS

如果默認RangeIndex請使用numpy.where每個索引值numpy.where2

df['color'] = np.where(df.index % 2, 'red', 'green')

通用解決方案類似,僅按df的長度創建helper數組:

df['color'] = np.where(np.arange(len(df)) % 2, 'red', 'green')
print (df)
    color   IntDen Density Condition
0   green   936645     Low      Ctrl
1     red  1571204     Low      Ctrl
2   green  1154038     Low      Ctrl
3     red  1423050     Low      Ctrl
4   green   691283     Low      As42
5     red   764449     Low      As42
6   green   638492     Low      As42
7     red   887382     Low      As42
8   green   788693     Low       H20
9     red  1401201     Low       H20
10  green   936645     Low       H20
11    red  1571204     Low       H20
12  green  1122389     Low       LPS
13    red  2262593     Low       LPS
14  green   866009     Low       LPS
15    red  1398048     Low       LPS

另一個想法是通過建立索引來設置值:

pos = df.columns.get_loc('color')
df.iloc[::2, pos] = 'green'
df.iloc[1::2, pos] = 'red'

類似的numpy解決方案:

#pandas 0.24+
arr = df['color'].to_numpy()
#pandas below
#arr = df['color'].values
arr[::2] = 'green'
arr[1::2] = 'red'
df['color'] = arr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM