python:dataframe groupby后agg、apply、transfrom用法
生活随笔
收集整理的這篇文章主要介紹了
python:dataframe groupby后agg、apply、transfrom用法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import pandas as pd
data = pd.DataFrame({'name':['wencky','stany','barbio','barbio'],'age':[29,29,3,10],'gender':['w','m','m', 'w']})# 1 transform可用,agg和apply得到NaN。
data["a"] = data.groupby("gender")["age"].agg(lambda x: x.mean())
# 輸出
name age gender a
0 wencky 29 w NaN
1 stany 29 m NaN
2 barbio 3 m NaN
3 barbio 10 w NaNdata["a"] = data.groupby("gender")["age"].apply(lambda x: x.mean())
# 輸出
name age gender a
0 wencky 29 w NaN
1 stany 29 m NaN
2 barbio 3 m NaN
3 barbio 10 w NaNdata["a"] = data.groupby("gender")["age"].transform(lambda x: x.mean())
# 輸出name age gender a
0 wencky 29 w 19.5
1 stany 29 m 16.0
2 barbio 3 m 16.0
3 barbio 10 w 19.5# 2
data= data.groupby("gender")["age"].agg(lambda x: x.mean())
# 輸出
gender
m 16.0
w 19.5data= data.groupby("gender")["age"].apply(lambda x: x.mean())# 輸出
gender
m 16.0
w 19.5data= data.groupby("gender")["age"].transform(lambda x: x.mean())
# 輸出
0 19.5
1 16.0
2 16.0
3 19.5# 3
data = data.groupby("gender").agg(lambda x: x["age"].mean())
# 報(bào)錯(cuò)data = data.groupby("gender").apply(lambda x: x["age"].mean())
# 輸出
gender
m 16.0
w 19.5data = data.groupby("gender").transform(lambda x: x["age"].mean())
# 報(bào)錯(cuò)# 4 該用法不可用
data["c"] = data.groupby("gender").agg(lambda x: x["age"].mean())
# 報(bào)錯(cuò)data["c"] = data.groupby("gender").apply(lambda x: x["age"].mean())
# 輸出name age gender c
0 wencky 29 w NaN
1 stany 29 m NaN
2 barbio 3 m NaN
3 barbio 10 w NaNdata["c"] = data.groupby("gender").transform(lambda x: x["age"].mean())
# 報(bào)錯(cuò)# 以下5-8用法使用agg均報(bào)錯(cuò):valueError: Must produce aggregated value# 5
data["b"]= data.groupby("gender")["age"].agg(lambda x: x+1)
# 輸出
valueError: Must produce aggregated valuedata["b"]= data.groupby("gender")["age"].apply(lambda x: x+1)
# 輸出name age gender b
0 wencky 29 w 30
1 stany 29 m 30
2 barbio 3 m 4
3 barbio 10 w 11data["b"]= data.groupby("gender")["age"].transform(lambda x: x+1)
# 輸出name age gender b
0 wencky 29 w 30
1 stany 29 m 30
2 barbio 3 m 4
3 barbio 10 w 11# 6 兩種用法結(jié)果一致
data = data.groupby("gender")["age"].apply(lambda x: x+1)
data = data.groupby("gender")["age"].transform(lambda x: x+1)
# 輸出
0 30
1 30
2 4
3 11# 7
data = data.groupby("gender").apply(lambda x: x["age"]+1)
# 輸出
gender
m 1 302 4
w 0 303 11data = data.groupby("gender").transform(lambda x: x["age"]+1)
# 報(bào)錯(cuò)# 8
data["d"] = data.groupby("gender").apply(lambda x: x["age"]+1)
# 報(bào)錯(cuò)data["d"] = data.groupby("gender"). transform (lambda x: x["age"]+1)
# 報(bào)錯(cuò)
總結(jié)
以上是生活随笔為你收集整理的python:dataframe groupby后agg、apply、transfrom用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python一些小操作
- 下一篇: 安装cv2(opencv-python)