首页 > 解决方案 > Pandas:如何根据索引值填充索引

问题描述

对于stackoverflow和数据处理来说非常新,如果这是一个过于简单或以前提出的问题,我们深表歉意,

假设我有如下数据:

index = list('ABCDEF')
values = [1,2,3,4,5,6]
test = pd.Series(values, index = index)

A    1
B    2
C    3
D    4
E    5
F    6

并想要创建如下所示的内容,其中每个索引值附加的次数由其在前一个对象中的值给出

0     A
1     B
2     B
3     C
4     C
5     C
6     D
7     D
8     D
9     D
10    E
11    E
12    E
13    E
14    E
15    F
16    F
17    F
18    F
19    F
20    F

我编写了以下代码,但觉得循环破坏了使用 pandas 的全部目的。如果有人知道更简单和优雅的解决方案,请分享:

aggr = pd.Series([])

for index,value in zip(test.index.values,test):
    to_append = pd.Series(list(index*value))
    aggr = aggr.append(to_append, ignore_index = True)

干杯

标签: pythonpandas

解决方案


您可以在索引上使用pd.repeat

pd.Series(test.index.repeat(test))

0     A
1     B
2     B
3     C
4     C
5     C
6     D
7     D
8     D
9     D
10    E
11    E
12    E
13    E
14    E
15    F
16    F
17    F
18    F
19    F
20    F

推荐阅读