Python:Pandas - 已经将数据帧分组返回到原始数据帧

时间:2015-01-13 12:36:10

标签: python pandas

所以我有一个pandas数据框,如下所示:

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循环中以某种方式完成吗?问题是,还有许多其他计算需要在for循环中完成。我正在使用列表l,该列表是在for循环内基于某些参数进行多次计算后获得的。并且l的值在for循环的每次迭代中都会发生变化。

1 个答案:

答案 0 :(得分: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