擅长:python、mysql、java
<p>使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.apply.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>file = 'https://raw.githubusercontent.com/amanaroratc/hello-world/master/testdf.csv'
df=pd.read_csv(file)
from sklearn.preprocessing import MinMaxScaler
cols=['rank','ratings']
def f(x):
scaler1=MinMaxScaler()
x[['rank_norm_mm', 'ratings_norm_mm']] = scaler1.fit_transform(x[cols])
return x
df = df.groupby(['category', 'date']).apply(f)
</code></pre>
<p>另一个解决方案:</p>
<pre><code>file = 'https://raw.githubusercontent.com/amanaroratc/hello-world/master/testdf.csv'
df=pd.read_csv(file)
from sklearn.preprocessing import MinMaxScaler
scaler1=MinMaxScaler()
cols=['rank','ratings']
df= df.join(df.groupby(['category', 'date'])[cols]
.apply(lambda x: pd.DataFrame(scaler1.fit_transform(x), index=x.index))
.add_prefix('_norm_mm'))
</code></pre>