几小时没有成功...
我的数据框的简化版本如下:
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)
答案 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