請注意,真實情況下,州和國家之間的數量和組合要大得多,而且不僅僅是 "美國 "這個值
。下面是一個資料框架:
import pandas as pd
data = pd. DataFrame({'state': ['ny','sf','tx', 'ny','ny'],'country'。 ['USA','USA','USA','USA']。
'Date': ['01/01/2020'/span>,'01/01/2020'/span>。 '01/01/2020','01/02/2020','01/02/2020']})
我對資料進行分組,以獲得在給定日期內按城市、國家劃分的條目數量:
我對資料進行分組,以獲得在給定日期內按城市、國家劃分的條目數量:
group_data = data.groupby(['state','country','Date']).size() .to_frame() .restruct_index()
所以我得到:
| | state | country | Date | 0 |----::|
|---:|:-------|:----------|:-----------|----:|
| 0 | ny | usa | 01/01/2020 | 1 !
| 1 | NY | USA | 01/02/2020 | 2 !
2 | Sf | 美國 | 01/01/2020 | 1 !
3 | tx | usa | 01/01/2020 | 1 |
事實上,我希望對資料框架中的每一個條目,為整個范圍的max(data['Date'])和min(data['Date'])填補缺少的日期,為不存在的子組州和國家填補值,所以例如它應該看起來像:
| | state | country | Date | 0 |----::|
|---:|:-------|:----------|:-----------|----:|
| 0 | ny | usa | 01/01/2020 | 1 !
1 | NY | USA | 01/02/2020 | 2 !
2 | Sf | 美國 | 01/01/2020 | 1 !
2 | sf | 美國 | 01/02/2020 | 0 !
| 3 | tx | usa | 01/01/2020 | 1 !
3 | TX | USA | 01/02/2020 | 0 !
在2020年1月2日增加了sf-usa和tx-usa兩個條目,內容為0.
。uj5u.com熱心網友回復:
添加unstack和stack
out = data.groupby(['state','country','Date']) 。 size().unstack(fill_value=0) .stack().reset_index()
Out[276]。
國家日期0。
0 NY USA 01/01/2020 1
1 NY USA 01/02/2020 2
2 舊金山 美國 01/01/2020 1
3SF USA 01/02/2020 0
4 tx usa 01/01/2020 1
5 tx usa 01/02/2020 0
uj5u.com熱心網友回復:
你也可以使用來自pyjanitor的complete函式,以暴露明確的缺失值;它也可以幫助解決有重復的情況(在這里不相關,因為groupby總是回傳uniques):
# pip install pyjanitor。
import pandas as pd
import janitor as jn
(data.groupby(['state', 'country', 'Date'], as_index = False)
.size()
.complete('state'/span>, 'country'/span>, 'Date'/span>)
.fillna(0)
#以保留資料為整數。
.astype({'size:pd.Int64Dtype()})
)
狀態 國家 日期 大小
0 ny usa 01/01/2020 1
1 NY USA 01/02/2020 2
2 舊金山 美國 01/01/2020 1
3SF USA 01/02/2020 0
4 tx usa 01/01/2020 1
5 tx usa 01/02/2020 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/310884.html
標籤:
