2015-01-13 44 views
-1

所以我有一個熊貓的數據幀,如下圖所示:的Python:熊貓 - 選舉已經grouped_by數據幀原始數據幀

df = pd.DataFrame({'col1': ['A', 'A', 'B', 'B'], 'col2':[1.0, 2, 3, 4]}) 

這看起來像

 col1 col2 
    0 A  1 
    1 A  2 
    2 B  3 
    3 B  4 

下面是一個更加簡化我想要做的版本。假設我運行下面的代碼來按「col1」列上的數據框進行分組,然後根據條件在組上按某些屬性添加另一列。

gb = df.groupby('col1') 

for i in range(len(set(df['col1']))): 
      word_l = [gb.get_group(x) for x in gb.groups][i] 
      l = [1,2] 
      word_l['added_col'] = l   #Column added 

什麼我需要做什麼來回報這種改變word_l數據幀原始數據幀df,使它看起來像下面:

 col1 col2 added_col 
    0 A  1  1 
    1 A  2  2 
    2 B  3  1 
    3 B  4  2 

可這裏面的某種方式做了環我提到過嗎?事情是,還有很多其他的計算需要在for循環中完成。我使用的列表l這是基於一些參數在for循環內進行了許多計算後獲得的。對於for循環的每次迭代,l的值都會更改。

回答

0

好吧我有一個答案!訣竅是創建一個空的數據框並添加到其中。

gb = df.groupby('col1') 
df1 = pd.DataFrame()  #Create empty data frame 
for i in range(len(set(df['col1']))): 
     word_l = [gb.get_group(x) for x in gb.groups][i] 
     l = [1,2] 
     word_l['added_col'] = l 
     df1 = df1.append(word_l)   #Append in empty data frame 

上面的,得到所需的輸出:

 col1 col2 added_col 
0 A  1   1 
1 A  2   2 
2 B  3   1 
3 B  4   2