簡體   English   中英

將列標題添加到新的pandas數據幀

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM