[問題][pandas]group後對同一欄位做兩次sort
大家好,我是python的初學者,最近有機會寫到了coursera(introduction to Data Science in python) 第二週作業:
雖然寫的code最後與答案一致,但想了很久還是無法理解某些觀念,因此想在這裡發問
題目是:假如僅考慮每州(state)人口最多的三個郡(county)計算人口總和,哪三個州總和數最多?
我的想法是:
1)先把每個state group起來, 再針對每個state sort出人口數最高的三個county
2)針對每個state 人數最高的三個county加總,並且sort出前三個state總和數最高的
以下是code:
census_df = pd.read_csv('https://storage.googleapis.com/py_ml_datasets/census.csv')
def answer_two():
state_filter = census_df[census_df["SUMLEV"]==50]
grouped = state_filter.groupby("STNAME")
city_sorted = grouped.apply(lambda x: x.sort_values(by ="CENSUS2010POP", ascending = False).head(3).sum())
top_3_state = city_sorted.sort_values(by="CENSUS2010POP", ascending = False).head(3)
return top_3_state["STNAME"]
answer_two()
我的問題是:
1) 在group後如果直接做sort_values會出現 error,必須使用apply才不會有error
2) 然而, 若在group後對同一個欄位做兩次apply也會出現error,也就是說group後必須先使用apply再使用sort_values才不會出現error
關於第二點,stack overflow的說法好像是 dataframe的限制:
不能同時對同一欄位做兩次apply sort? (不是很確定)
想請教:先group後,對同一欄位做兩次sort (必須先apply 再 sort_values) 的原因是?
如果不適合po在這,再麻煩告知,我會把文刪掉,感謝大家~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.110.38
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1528900283.A.114.html
※ 編輯: e9904567 (114.136.110.38), 06/13/2018 22:32:12
※ 編輯: e9904567 (114.136.110.38), 06/13/2018 22:33:06
→
06/14 10:33,
5年前
, 1F
06/14 10:33, 1F
→
06/14 10:33,
5年前
, 2F
06/14 10:33, 2F
→
06/14 10:33,
5年前
, 3F
06/14 10:33, 3F
→
06/14 10:34,
5年前
, 4F
06/14 10:34, 4F
→
06/14 10:35,
5年前
, 5F
06/14 10:35, 5F
→
06/14 10:35,
5年前
, 6F
06/14 10:35, 6F
→
06/14 10:35,
5年前
, 7F
06/14 10:35, 7F
→
06/15 09:41,
5年前
, 8F
06/15 09:41, 8F