最近在實際專案使用dataframe的時候遇到乙個坑。
那就是假如我先對dataframe進行groupby 分組,然後再對各組進行遍歷。
它的順序是並不是我們之前的排序順序。具體如下:
在import pandas as pd
test_df = pd.dataframe([[
1,88,
888],[
1,99,
999],[
3,33,
333],[
3,44,
444],[
3,55,
555],[
6,66,
666]
],columns=
['id'
,'c1'
,'c2'])
test_df = test_df.sort_values(by=
['c2'])
test_df.head(
6)
當我們執行這點**的時候,我們會得到乙個這樣的dataframe。之所以沒有按照id排序是因為我們最dataframe做了排序要求,以c2為沒儀表
index
idc1c22
3333333344
4444355
5555666
6660188
8881199
999緊接著當我們再執行:
test_group = test_df.groupby(
['id'])
for i,test in test_group:
print
(test)
這時候我們就會得到乙個這樣的結果
index
idc1c20
1888881199
999
index
idc1c22
3333333344
4444355
555
index
idc1c25
666666這裡不難發現,groupby之後的順序,其實並不是我們想要的排序順序。
那是因為我們又以id作為分組,所以排序方式變成了id為主。
要解決這個問題,我查了一下官方文件。在官方文件的groupby裡面有這麼乙個引數是可以傳的。
大致意思就是這個引數可以調整groupby方法是否按照group key進行排序。然後它的預設是true。所以才會導致groupby之後和我們sort的順序有偏差。所以假如要保持原來順序,我們應該:
test_group = test_df.groupby(
['id'
],sort=
false
)for i,test in test_group:
print
(test)
index
idc1c22
3333333344
4444355
555
index
idc1c25
666666
index
idc1c20
1888881199
999最後就可以得到應有的排序了。
js函式和變數的執行順序 易錯
js函式和變數的宣告與執行順序 一 函式執行順序 1 正常順序 1 function f 4f alert 2 所有瀏覽器都能測試通過。2 倒序呼叫 1 f alert 2 2function f 之前一些瀏覽器會報undefined,不過,目前的版本大多都可以了 3 含參函式倒序 1 f 2 al...
Jquery ajax執行順序 返回自定義錯誤資訊
1.多個ajax 在乙個function中的執行順序 由於jquery中的ajax的async預設是true 非同步請求 如果想乙個ajax執行完後再執行另乙個ajax,需要把async false就可以了 function testajax alert test ajax error functi...
Jquery ajax執行順序 返回自定義錯誤資訊
1.多個ajax 在乙個function中的執行順序 由於jquery中的ajax的async預設是true 非同步請求 如果想乙個ajax執行完後再執行另乙個ajax,需要把async false就可以了.function testajax alert test ajax error functi...