python - Pandas 可以按行执行 min() 和 max() 函数吗?

标签 python pandas dataframe

在我的 DataFrame 中,我希望将特定列的值剪裁在 0 到 100 之间。例如,给定以下内容:

  a  b
0 10 90
1 20 150
2 30 -30

我想得到:

  a  b   c
0 10 90  90
1 20 150 100
2 30 -30 0

我知道在 Pandas 中,某些算术运算是跨列进行的。例如,我可以像这样将 b 列中的每个数字加倍:

>>>df["c"] = df["b"] * 2
>>>df
  a  b   c
0 10 90  180
1 20 150 300
2 30 -30 -60

然而,这不适用于内置函数,如 minmax:

>>>df["c"] = min(100, max(0, df["b"]))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有什么方法可以高效地完成我想要的吗?

最佳答案

您可以使用 Series.clip :

df['c'] = df['b'].clip(0,100)
print (df)
    a    b    c
0  10   90   90
1  20  150  100
2  30  -30    0

关于python - Pandas 可以按行执行 min() 和 max() 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45966493/

相关文章:

python - Mykrobe 预测器 AMR 预测不起作用

python - 求曲线中的线性部分和斜率

python - 如何从pandas数据框中提取索引值和元素值

读取以竖线和逗号分隔的文件 : |column1|, |column2|

python - 如何在Pandas数据框中的其他列中填充基于新列的值

python - 使用子掩码掩码 numpy 数组

python - 使用 ElementTree.parse 解析 XML 文件时出错

python - PyDNS 和 DNS 超时错误

python - 我们如何提取数据框中具有顺序值的行?

python - 在绘图条形图中更改颜色