在DataFrame中填充单元格

时间:2016-08-01 20:33:26

标签: python pandas

我创建了DataFrame并遇到了一个问题:

      r       value    
0    0.8     2.5058
1    0.9    -1.9320
2    1.0    -2.6097
3    1.2    -1.6840
4    1.4    -0.8906
5    0.8     2.6955
6    0.9    -1.9552
7    1.0    -2.6641
8    1.2    -1.7169
9    1.4    -0.9056
...   ...    ...

对于从0.81.4的r,我想为r = 1.0分配值。 因此,所需的Dataframe应如下所示:

   r       value    
0    0.8    -2.6097
1    0.9    -2.6097
2    1.0    -2.6097
3    1.2    -2.6097
4    1.4    -2.6097
5    0.8    -2.6641
6    0.9    -2.6641
7    1.0    -2.6641
8    1.2    -2.6641
9    1.4    -2.6641
...  ...    ....

我的第一个想法是创造条件:

np.where(data['r']==1.0, data['value'], 1.0)

但它并没有解决我的问题。

2 个答案:

答案 0 :(得分:1)

从这开始:

<table>
  <tr>
    <td>
      ABC<br/>
    </td>
    <td>
      DEF<br/>
    </td>
    <td>
      GHI<br/>
    </td>
  </tr>
  <tr>
    <td>
      JKL<br/>
      MNO<br/>
    </td>
    <td>
      PQR<br/>
    </td>
    <td>
      STU<br/
    </td>
  </tr>
</table>

答案 1 :(得分:1)

试试这个:

def subr(df):
    isone = df.r == 1.0
    if isone.any():
        atone = df.value[isone].iloc[0]
        # Improvement suggested by @root
        df.loc[df.r.between(0.8, 1.4), 'value'] = atone
        # df.loc[(df.r >= .8) & (df.r <= 1.4), 'value'] = atone
    return df

df.groupby((df.r < df.r.shift()).cumsum()).apply(subr)

enter image description here