所以我有一个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循环的每次迭代中都会发生变化。
答案 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