当我的 df 以下时,我想获取一个列“C”,该列在条件“B == 't'”内具有特定值“15”和“A”列之间的最大值
testdf = pd.DataFrame({"A":[20, 16, 7, 3, 8],"B":['t','t','t','t','f']})
testdf
A B
0 20 t
1 16 t
2 7 t
3 3 t
4 8 f
我尝试过这个:
testdf.loc[testdf['B']=='t', 'C'] = max(15,(testdf.loc[testdf['B']=='t','A']))
所需的输出是:
A B C
0 20 t 20
1 16 t 16
2 7 t 15
3 3 t 15
4 8 f 8
你能帮我得到输出吗?谢谢!
最佳答案
将np.where
与clip
一起使用:
testdf['C'] = np.where(testdf['B'].eq('t'),
testdf['A'].clip(15), df['A'])
或者与series.where
类似:
testdf['C'] = (testdf['A'].clip(15)
.where(testdf['B'].eq('t'), testdf['A'])
)
输出:
A B C
0 20 t 20
1 16 t 16
2 7 t 15
3 3 t 15
4 8 f 8
关于Python Dataframe - 获取特定数字与列值之间的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66430056/