如何“展开”Pandas数据帧?

2024-07-05 12:03:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框,看起来像这样

data = [['loc1', 1], ['loc2', 3], ['loc3', 3], ['loc4', 1], ['loc5',2], ['loc6',1]]
df = pd.DataFrame(data, columns = ['loc', 'count']) 

我想展开/反聚合它,这样我有1行用于loc1,4行用于loc2,3行用于loc3,等等,其中每一个新行都有一个唯一的递增标识符与之关联

大概是这样的:

data = [['loc1', 'id1'], ['loc2', 'id2'], ['loc2', 'id3'], ['loc2', 'id4'] , ['loc3', 'id5'], ['loc3', 'id6'], ['loc3', 'id7'], ['loc4', 'id8'], ['loc5', 'id9'], ['loc5', 'id10'], ['loc6', 'id11']]
df = pd.DataFrame(data, columns = ['loc', 'incrementingId'])

首先,我想这是一种常见的数据操作,但我不知道该怎么称呼它

第二,我该怎么做

谢谢


Tags: columns数据dataframedfdatacount标识符loc
1条回答
网友
1楼 · 发布于 2024-07-05 12:03:41

使用^{}^{},通过^{}drop=True创建默认索引,并为新列创建索引,然后通过id和添加1的索引值添加新列:

df = df.loc[df.index.repeat(df['count'])].reset_index(drop=True) 
df['incrementingId'] = 'id' + (df.index + 1).astype(str)
print (df)
     loc incrementingId
0   loc1            id1
1   loc2            id2
2   loc2            id3
3   loc2            id4
4   loc3            id5
5   loc3            id6
6   loc3            id7
7   loc4            id8
8   loc5            id9
9   loc5           id10
10  loc6           id11

相关问题 更多 >