DataFrame.clip(lower=None, upper=None, axis=None, inplace=False, *args, **kwargs)
在输入阈值处修剪值。
将边界外的值指定给边界值。阈值可以是奇异值或数组,并且在后一种情况下,剪切在指定轴中以元素方式执行。
参数: | lower : 最小阈值。低于此阈值的所有值都将设置为它。 upper : 最大阈值。高于此阈值的所有值都将设置为它。 axis : 沿给定轴将对象与下部和上部对齐。 inplace : 布尔值,默认为 是否对数据执行操作。 版本0.21.0中的新功能。 *args,** kwargs 其他关键字没有效果,但可以接受与numpy的兼容性。 |
返回: | Series或DataFrame 与调用对象相同的类型,替换了剪辑边界之外的值 |
例子
1)基本用法
有一个DataFrame,包含一些随机数值。我们希望将所有数值限制在一个指定的范围内。
import pandas as pd import numpy as np # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50], 'C': [-5, 0, 5, 10, 15] } df = pd.DataFrame(data) print("原始DataFrame:") print(df) # 使用clip方法,将数值限制在2到10之间 clipped_df = df.clip(lower=2, upper=10) print("\n裁剪后的DataFrame (范围 2 到 10):") print(clipped_df)
2)单独指定最小值或最大值
可以只指定最小值或最大值。
import pandas as pd import numpy as np # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50], 'C': [-5, 0, 5, 10, 15] } df = pd.DataFrame(data) # 只限制最小值 clipped_df_min = df.clip(lower=0) print("\n裁剪后的DataFrame (最小值为 0):") print(clipped_df_min) # 只限制最大值 clipped_df_max = df.clip(upper=10) print("\n裁剪后的DataFrame (最大值为 10):") print(clipped_df_max)
3)使用DataFrame作为边界
也可以使用另一个DataFrame来作为上下限的边界。
import pandas as pd import numpy as np # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50], 'C': [-5, 0, 5, 10, 15] } df = pd.DataFrame(data) # 创建上下限DataFrame lower_bounds = pd.DataFrame({ 'A': [0, 1, 2, 3, 4], 'B': [5, 10, 15, 20, 25], 'C': [0, 0, 0, 0, 0] }) upper_bounds = pd.DataFrame({ 'A': [2, 3, 4, 5, 6], 'B': [15, 25, 35, 45, 55], 'C': [5, 10, 15, 20, 25] }) clipped_df_bounds = df.clip(lower=lower_bounds, upper=upper_bounds) print("\n裁剪后的DataFrame (使用DataFrame作为边界):") print(clipped_df_bounds)
4)使用示例
import pandas as pd # 创建一个包含示例数据的DataFrame data = {'col_0': [9, -3, 0, -1, 5], 'col_1': [-2, -7, 6, 8, -5]} df = pd.DataFrame(data) print("原始DataFrame:") print(df) # 使用下限阈值和上限阈值的每列剪辑 df_clipped = df.clip(-4, 6) print("\n使用全局下限阈值 -4 和上限阈值 6 的裁剪后的DataFrame:") print(df_clipped) # 使用每个列元素的特定下限和上限阈值的剪辑 t = pd.Series([2, -4, -1, 6, 3]) df_clipped_specific = df.clip(t, t + 4, axis=0) print("\n使用每个列元素的特定下限和上限阈值的裁剪后的DataFrame:") print(df_clipped_specific)