我设法在pandas数据框中添加了一列,其中包含组的内部编号
这是输入数据帧:
df = pd.DataFrame({
'name': ['Name1','Name2','Name3','Name4','Name5','Name6', 'Name7', 'Name8'],
'group':['GroupB','GroupB','GroupB','GroupA','GroupA','GroupA', 'GroupC', 'GroupC'],
'revenue':[1,2,3,4,5,6,11,22]}
)
看起来是这样的:
group name revenue
0 GroupB Name1 1
1 GroupB Name2 2
2 GroupB Name3 3
3 GroupA Name4 4
4 GroupA Name5 5
5 GroupA Name6 6
6 GroupC Name7 11
7 GroupC Name8 22
我想要这样的输出
group name revenue Group_internal_id
0 GroupA Name4 4 0
1 GroupA Name5 5 1
2 GroupA Name6 6 2
3 GroupB Name1 1 0
4 GroupB Name2 2 1
5 GroupB Name3 3 2
6 GroupC Name7 11 0
7 GroupC Name8 22 1
我通过以下代码在dataframe outDF中获得了所需的输出:
numbering_function = lambda x: range(len(x.index))
outDF = pd.DataFrame()
for iK, iDF in df.groupby('group'):
tempDF = iDF.copy()
tempDF['Group_internal_id'] = numbering_function(tempDF)
outDF = outDF.append(tempDF, ignore_index=True)
然后,outDF如下所示:
group name revenue Group_internal_id
0 GroupA Name4 4 0
1 GroupA Name5 5 1
2 GroupA Name6 6 2
3 GroupB Name1 1 0
4 GroupB Name2 2 1
5 GroupB Name3 3 2
6 GroupC Name7 11 0
7 GroupC Name8 22 1
我想找到一种不使用循环而获得相同输出数据帧的方法
谢谢
您需要^{} 和^{} :
相关问题 更多 >
编程相关推荐