[英]Adding Column Headers to new pandas dataframe
我從以前的數據框使用創建一個新的數據框熊貓.groupby
和.size
方法。
[in] results = df.groupby(["X", "Y", "Z", "F"]).size()
[out]
9 27/02/2016 1 N 326
9 27/02/2016 1 S 332
9 27/02/2016 2 N 280
9 27/02/2016 2 S 353
9 27/02/2016 3 N 177
這表現得如預期,但結果是沒有列標題的數據幀。
此SO問題表明以下內容將列名添加到生成的數據幀中
[in] results.columns = ["X","Y","Z","F","Count"]
但是,這似乎沒有任何影響。
[out]
9 27/02/2016 1 N 326
9 27/02/2016 1 S 332
9 27/02/2016 2 N 280
9 27/02/2016 2 S 353
9 27/02/2016 3 N 177
你看到的是你的分組列作為索引,如果你調用reset_index
然后它恢復列名
所以
results = df.groupby(["X", "Y", "Z", "F"]).size()
results.reset_index()
應該管用
In [11]:
df.groupby(["X","Y","Z","F"]).size()
Out[11]:
X Y Z F
9 27/02/2016 1 N 1
S 1
2 N 1
S 1
3 N 1
dtype: int64
In [12]:
df.groupby(["X","Y","Z","F"]).size().reset_index()
Out[12]:
X Y Z F 0
0 9 27/02/2016 1 N 1
1 9 27/02/2016 1 S 1
2 9 27/02/2016 2 N 1
3 9 27/02/2016 2 S 1
4 9 27/02/2016 3 N 1
此外,您可以使用count
來實現您想要的效果:
In [13]:
df.groupby(["X","Y","Z","F"]).count().reset_index()
Out[13]:
X Y Z F Count
0 9 27/02/2016 1 N 1
1 9 27/02/2016 1 S 1
2 9 27/02/2016 2 N 1
3 9 27/02/2016 2 S 1
4 9 27/02/2016 3 N 1
你也可以在這里傳遞param as_index=False
:
In [15]:
df.groupby(["X","Y","Z","F"], as_index=False).count()
Out[15]:
X Y Z F Count
0 9 27/02/2016 1 N 1
1 9 27/02/2016 1 S 1
2 9 27/02/2016 2 N 1
3 9 27/02/2016 2 S 1
4 9 27/02/2016 3 N 1
這通常很好,但是如果你嘗試在無法聚合dtypes
列上使用聚合方法,那么一些聚合函數將會出現問題,例如,如果你有str
dtypes並且你決定調用mean
。
你可以使用as_index=False
.groupby()
函數的as_index=False
參數:
results = df.groupby(["X", "Y", "Z", "F"], as_index=False).size().rename(columns={0:'Count'})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.