Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过数据帧像switch语句一样进行广播的聪明方法_Python_Pandas_Dataframe_Array Broadcasting - Fatal编程技术网

Python 通过数据帧像switch语句一样进行广播的聪明方法

Python 通过数据帧像switch语句一样进行广播的聪明方法,python,pandas,dataframe,array-broadcasting,Python,Pandas,Dataframe,Array Broadcasting,在其他语言中,我会使用开关进行分段操作。有没有一种方法可以通过切片或广播来高效地执行以下操作?数据结构是一个多索引数据帧 def spreadStat(data): data.loc[data.Pval - data.Tval > 0 and data.Tval.value() > 75, 'Tval'] = data['Tval'] - 500 data.loc[data.Pval - data.Tval > 0 and data.Tval.value() < 25,

在其他语言中,我会使用开关进行分段操作。有没有一种方法可以通过切片或广播来高效地执行以下操作?数据结构是一个多索引数据帧

def spreadStat(data):
data.loc[data.Pval - data.Tval > 0 and data.Tval.value() > 75, 'Tval'] = data['Tval'] - 500
data.loc[data.Pval - data.Tval > 0 and data.Tval.value() < 25, 'Tval'] = data['Tval'] - 400
data.loc[data.Pval - data.Tval > 0 and 25 < data.Tval.value() < 40, 'Tval'] = data['Tval'] - 300
data.loc[data.Pval - data.Tval > 0 and 60 < data.Tval.value() < 75, 'Tval'] = data['Tval'] - 200
data.loc[data.Pval - data.Tval > 0 and 40 < data.Tval.value() < 60, 'Tval'] = data['Tval'] - 100
def spreadStat(数据):
data.loc[data.Pval-data.Tval>0和data.Tval.value()>75,'Tval']=data['Tval']-500
data.loc[data.Pval-data.Tval>0和data.Tval.value()<25,'Tval']=data['Tval']-400
data.loc[data.Pval-data.Tval>0和250和600和40

看起来这可能是一个线性函数或函数的某种映射?如果您有任何帮助,我们将不胜感激。

这里有
cut

bins = [-np.inf, 25, 40, 60, 75, np.inf]
vals = [400, 300, 200, 100, 500]

# I didn't test, but `astype` might not be necessary
to_subtract = pd.cut(data.Tval, bins=bins, labels=vals).astype(float)

data.loc[data.Pval > data.Tval, 'Tval'] -= to_subtract