如果多列之和为0,则用nan填充列。

问题描述 投票:0回答:1

任务

我有一个 df 在这里,我做了一些比率,是由 dateid. 我想填写列 cNaN 若是 ab 是0.任何帮助将是真棒!!

df

      date      id   a    b   c
0   2001-09-06  1    3    1   1
1   2001-09-07  1    3    1   1
2   2001-09-08  1    4    0   1
3   2001-09-09  2    6    0   1
4   2001-09-10  2    0    0   2
5   2001-09-11  1    0    0   2
6   2001-09-12  2    1    1   2
7   2001-09-13  2    0    0   2
8   2001-09-14  1    0    0   2
python pandas dataframe fill
1个回答
2
投票

试试这个。

df['new_c'] = df.c.where(df[['a','b']].sum(1).ne(0))


Out[75]:
         date  id  a  b  c  new_c
0  2001-09-06   1  3  1  1    1.0
1  2001-09-07   1  3  1  1    1.0
2  2001-09-08   1  4  0  1    1.0
3  2001-09-09   2  6  0  1    1.0
4  2001-09-10   2  0  0  2    NaN
5  2001-09-11   1  0  0  2    NaN
6  2001-09-12   2  1  1  2    2.0
7  2001-09-13   2  0  0  2    NaN
8  2001-09-14   1  0  0  2    NaN

1
投票

最好是建立一个形状相同的新数据框,然后做以下操作。

i = 0
for line in df :
    new_df[i]['date'] = line['date']
    new_df[i]['a'] = line['a']
    new_df[i]['b'] = line['b']
    if line['a'] + line['b'] == 0 :
       new_df[i]['c'] = Nan
i += 1 
© www.soinside.com 2019 - 2024. All rights reserved.