Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 熊猫:如何对基于两列的过滤行进行数学计算?_Python_Pandas - Fatal编程技术网

Python 熊猫:如何对基于两列的过滤行进行数学计算?

Python 熊猫:如何对基于两列的过滤行进行数学计算?,python,pandas,Python,Pandas,我有下面的数据框,我需要对过滤的行进行数学运算 data = pd.DataFrame({'name': ['jpy','jpy','eur','usd','usd','usd'],'currency':['jpy_23','jpy_23','eur_15', 'thb_20','thb_20','thb_20'], 'sal':[15.0,20.0,25.0,30.0,20.0,15.0 ]}) 我想根据以下两列进行分组: df1 = df.groupby(['name','cur

我有下面的数据框,我需要对过滤的行进行数学运算

data = pd.DataFrame({'name': ['jpy','jpy','eur','usd','usd','usd'],'currency':['jpy_23','jpy_23','eur_15', 'thb_20','thb_20','thb_20'], 
    'sal':[15.0,20.0,25.0,30.0,20.0,15.0 ]})
我想根据以下两列进行分组:

df1 = df.groupby(['name','currency'])
然后我想对每个组执行以下操作,如下所示:

len(data[(data['sal']>25)])/len(data.index)
len(data[(data['sal']<=25)])/len(data.index)
len(data[(data['sal']>=0) & (data['sal']<5)])/len(data.index)
len(data[(data['sal']>=5) & (data['sal']<15)])/len(data.index)
len(data[(data['sal']>=15) & (data['sal']<25)])/len(data.index)
len(data[(data['sal']>25)])/len(data.index)
len(data[(data['sal']=0)和(data['sal']=5)和(data['sal']=15)和(data['sal']可以是:

In [4]: bins = [0, 5, 15, 25, float("inf")]
   ...: groups = data.groupby(['name', 'currency', pd.cut(data['sal'], bins)])
   ...: d = groups.size().unstack()
   ...: d.div(d.sum(axis=1), axis=0)
Out[4]:
sal            (0.0, 5.0]    (5.0, 15.0]   (15.0, 25.0]  (25.0, inf] 
name currency                                                        
eur  eur_15             0.0      0.000000      1.000000      0.000000
     jpy_23             NaN           NaN           NaN           NaN
     thb_20             NaN           NaN           NaN           NaN
jpy  eur_15             NaN           NaN           NaN           NaN
     jpy_23             0.0      0.500000      0.500000      0.000000
     thb_20             NaN           NaN           NaN           NaN
usd  eur_15             NaN           NaN           NaN           NaN
     jpy_23             NaN           NaN           NaN           NaN
     thb_20             0.0      0.333333      0.333333      0.333333
可能是:

In [4]: bins = [0, 5, 15, 25, float("inf")]
   ...: groups = data.groupby(['name', 'currency', pd.cut(data['sal'], bins)])
   ...: d = groups.size().unstack()
   ...: d.div(d.sum(axis=1), axis=0)
Out[4]:
sal            (0.0, 5.0]    (5.0, 15.0]   (15.0, 25.0]  (25.0, inf] 
name currency                                                        
eur  eur_15             0.0      0.000000      1.000000      0.000000
     jpy_23             NaN           NaN           NaN           NaN
     thb_20             NaN           NaN           NaN           NaN
jpy  eur_15             NaN           NaN           NaN           NaN
     jpy_23             0.0      0.500000      0.500000      0.000000
     thb_20             NaN           NaN           NaN           NaN
usd  eur_15             NaN           NaN           NaN           NaN
     jpy_23             NaN           NaN           NaN           NaN
     thb_20             0.0      0.333333      0.333333      0.333333

请正确地编排代码。@Surya Lohia.您不了解哪部分?新的数据帧({'name':['jpy','eur','usd'],'currency':['jpy_23','eur_15','thb_20'],'>25':[],'15&25':[])。请正确地设置此代码的框架,或者提供数据框架的输出。很难理解数据框架的内容。空列应该包含我上面提到的计算值。这就是为什么我将其留空的原因。我按照上面的方法对整个数据进行了设置,但没有对分组数据进行设置。请正确地设置代码的框架。@Surya Lohia。哪一个是你不明白吗?新的数据=pd.数据帧({'name':['jpy','eur','usd'],'currency':['jpy_23','eur_15','thb_20'],'>25':[],'15&25':[])。请正确设置此代码的框架,或者提供数据框架的输出。很难理解数据框架的内容。空列应包含我上面提到的计算值。这就是为什么我将其保留为空的原因。我按上述方式对整个数据进行了设置,但没有对分组数据进行设置。我需要使用“名称”和“货币”的组合n需要对每个组进行计算并填充计算值。例如:len(data[(data['sal']>=0)和(data['sal']嗯,您始终可以在groupby中添加所需的列,并进行更新。如何使用此操作添加列len(data[(data['sal']>=0)和(data['sal']您的意思是
[0,5]
?否。我正在计算[0,5]中的“日元计数-23日元”除以数据集中的总计数的百分比。我需要“名称”和“货币”的组合。然后需要对每个组进行计算并填充计算值。例如:len(data[(data['sal']>=0)和(data['sal']好的,你总是可以在groupby中添加所需的列,更新。如何使用此操作len(data[(data['sal']>=0)和(data['sal']你的意思是
[0,5)
?不。我正在计算[0,5]中的'count of JPY-jpy23'除以数据集中的总计数的百分比。