2013-09-23 74 views
1

我申請描述()到我的數據幀的幾列,例如:如何將數據幀列的幾個結果合併成一個數據框?

raw_data.groupby("user_id").size().describe() 
raw_data.groupby("business_id").size().describe() 

還有幾個,因爲我想看看有多少個數據點每用戶平均/中位數/等在那裏。 。

我的問題是,每個調用都會返回一些似乎是非結構化輸出的東西。是否有一種簡單的方法可以將它們全部結合到一個新的數據框中,其列將是:[count,mean,std,min,25%,50%,75%,max],索引是各個列的描述?

謝謝!

回答

0

我可能只是手動構建一個新的DataFrame。如果你有

>>> raw_data 
    user_id business_id data 
0  10   1  5 
1  20   10  6 
2  20   100  7 
3  30   100  8 

隨後的groupby(smth).size().describe()結果只是一個Series

>>> raw_data.groupby("user_id").size().describe() 
count 3.000000 
mean  1.333333 
std  0.577350 
min  1.000000 
25%  1.000000 
50%  1.000000 
75%  1.500000 
max  2.000000 
dtype: float64 
>>> type(_) 
<class 'pandas.core.series.Series'> 

等:而不是from_items

>>> descrs = ((col, raw_data.groupby(col).size().describe()) for col in raw_data) 
>>> pd.DataFrame.from_items(descrs).T 
      count  mean  std min 25% 50% 75% max 
user_id   3 1.333333 0.57735 1 1 1 1.5 2 
business_id  3 1.333333 0.57735 1 1 1 1.5 2 
data    4 1.000000 0.00000 1 1 1 1.0 1 

我可以通過字典,例如 pd.DataFrame({col: raw_data.groupby(col).size().describe() for col in raw_data}).T,但這種方式保留列順序而不必考慮它。

如果你不希望所有的列,而不是for col in raw_data,你可以定義columns_to_describe = ["user_id", "business_id"] etc和使用for col in columns_to_describe,或使用for col in raw_data if col.endswith("_id"),或任何你喜歡。

相關問題