需要根据其他列中的数值插入字符串

时间:2019-09-03 14:20:21

标签: python pandas replace nan numeric

我有以下数据框

cols = ['Name', 'Production']
data = [['Well1', '0'],
        ['Well2', '1200'], 
        ['Well3', '300'], 
        ['Well4', '600'], 
        ['Well5', '100']
       ]
df = pd.DataFrame(data=data, columns=cols)

    Name Production
0  Well1          0
1  Well2       1200
2  Well3        300
3  Well4        600
4  Well5        100

我需要插入一个名为“ Rating”的新列,并根据生产价值为其分配一个字符串。 我需要的条件是

rating is 'R1' if production is >= 850
          'R2' if <= 150
          'R3' if > 150 and < 850
          'na' if =0

我尝试过的

bopd = [
        (df['Production'] >= 850),
        (df['Production'] <= 150),
        (df['Production'] > 150) & (df['Production'] < 850),
        (df['Production'] == 0)
        ]
ratings = ['R1', 'R3', 'R2', 'na']
df['Rating'] = np.select(bopd, ratings, default='none')

在我正在使用的数据集中,它说dtype:float64。我尝试了这个确切的代码(更改了列名),然后收到以下错误

TypeError: '>' not supported between instances of 'str' and 'int'

我尝试使用df.astype(str).astype(int),但仍然无法满足我的条件。

0 个答案:

没有答案