Python:替换Dataframe子集中的负数:

时间:2019-01-13 23:55:22

标签: python

几小时没有成功...

我的数据框的简化版本如下:

     Name   A   B
0    Alex  20  10
1    Alex  10   5
2     Bob -12   4
3  Clarke  13  -3

需要达到这个目的:

     Name   A   B
0    Alex  20  10
1    Alex  10   5
2     Bob   0   4
3  Clarke  13   0

对所有行和子集列使用.loc无效:

from __future__ import print_function
import pandas as pd
import numpy as np
data = [['Alex',20, 10],['Alex',10, 5],['Bob',-12, 4],['Clarke',13, -3]]
df = pd.DataFrame(data,columns=['Name','A', 'B'])
colNames = df[['A','B']].columns.tolist()

print (df)

df[df.loc[:, colNames] < 0] = 0

print (df)

1 个答案:

答案 0 :(得分:0)

您可以使用clip

colNames = ['A', 'B']
df.loc[:, colNames] = df.loc[:, colNames].clip(lower=0)

print(df)

输出

     Name   A   B
0    Alex  20  10
1    Alex  10   5
2     Bob   0   4
3  Clarke  13   0