您可以使用pivot_table
與聚集len
,如果你需要填寫NaN
到0
使用參數fill_value=0
:
print df.pivot_table(index='Hr', columns='C', values='A', aggfunc=len, fill_value=0)
樣品:
import pandas as pd
df = pd.DataFrame({'Hr': [1] * 10 + [2] * 6 + [3] * 4,
'A': np.arange(20),
'C': ['US'] * 10 + ['JP'] * 10 })
print df
A C Hr
0 0 US 1
1 1 US 1
2 2 US 1
3 3 US 1
4 4 US 1
5 5 US 1
6 6 US 1
7 7 US 1
8 8 US 1
9 9 US 1
10 10 JP 2
11 11 JP 2
12 12 JP 2
13 13 JP 2
14 14 JP 2
15 15 JP 2
16 16 JP 3
17 17 JP 3
18 18 JP 3
19 19 JP 3
print df.pivot_table(index='Hr', columns='C', values='A', aggfunc=len, fill_value=0)
C JP US
Hr
1 0 10
2 6 0
3 4 0
如果您需要reset_index
和刪除列的名稱,使用rename_axis
(新中pandas
0.18.0
):
print df.pivot_table(index='Hr', columns='C', values='A', aggfunc=len, fill_value=0)
.reset_index()
.rename_axis(None, axis=1)
Hr JP US
0 1 0 10
1 2 6 0
2 3 4 0
你可以添加你的數據樣本和所需的輸出?樣本中有兩列'C'? – jezrael
@jezrael希望你明白我的意思,提供的解決方案不會產生輸出 – user113531