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'除以数据集中的总计数的百分比。