如何“展开”熊猫数据框?

时间:2021-02-19 07:58:20

标签: python pandas dataframe

我有一个看起来像这样的 Pandas 数据框

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'])

首先,我认为这是一种比较常见的数据操作,但我不知道该怎样称呼它。

第二,我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:3)

使用 Index.repeatDataFrame.loc,通过 DataFrame.reset_indexdrop=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