重复某些 pandas 系列值,使其具有 1 到 100 之间的所有索引值的条目



我创建了一个熊猫系列列表,每个系列都按 1 到 100 之间的数字索引,例如

Index    Value
1        62.99
4        64.39
37       75.225
65       88.12
74       89.89
79       93.30
88       94.30
92       95.83
100      100.00

我想做的,无论是当它是一个系列时,还是在调用 .to_numpy(( 后作为一个数组,就是填写它,以便我的系列有 100 个值(1 到 100(,任何新条目都具有以前的现有值,即

Index    Value
1        62.99
2        62.99
3        62.99
4        64.39
5        64.39
6        64.39
...
...
36       64.39
37       75.225
38       75.225

等等。

我可以通过循环访问每个系列并检查值的变化,以冗长的方式以编程方式做到这一点;我的问题是,是否有一个版本的 Series.repeat(( 可以一次点击,或者一个 numpy 函数可以用我的 100 个值以这种方式"填充"我的数组?

提前感谢您的阅读和任何建议。这不是家庭作业;这是一个真正的问题,所以如果我的提问风格不像你期望的那样,请不要攻击我。

你需要做的是预先填充一个系列中的值: 此代码

series = pd.Series([33.2, 36, 39, 55], index=[3, 6, 12, 14], name='series')
indices = range(100)
df = pd.DataFrame(indices)
series = df.join(series).ffill()['series']

生产

0      NaN
1      NaN
2      NaN
3     33.2
4     33.2
... 
95    55.0
96    55.0
97    55.0
98    55.0
99    55.0

第一个值 ar NaN,因为序列中没有要填充它们的值

这就是我采用的解决方案 - 带有 fillna(0( 的 ffill((,连接到 range(1,101(。我不得不遍历一个更大的数据集,该数据集需要首先按 ID 分组/为每个"存储桶"获取最大"Pct":-

j=df[['ID','Bucket','Pct']].groupby(['ID','Bucket']).max()
for i in df['ID'].unique():
index=pd.DataFrame(range(1,101))
index.columns=['Bucket']
k=pd.merge(index,j.loc[i],how='left',on='Bucket').ffill().fillna(0)

In:
Bucket  Pct
3       0.03
3       0.1
3       0.26
3       0.42
3       0.45
3       0.59
3       0.69
3       0.83
3       0.86
3       0.91
3       0.94
3       0.98
4       1.1
...       ...
91      98.89
93      99.08
94      99.17
94      99.26
94      99.43
94      99.48
94      99.63
100     100.0
Out:
Bucket  Pct
1       0.00
2       0.00
3       0.98
4       1.83
5       22.83
...     ...
91      98.89
92      98.89
93      99.08
94      99.63
95      99.63
96      99.63
97      99.63
98      99.63
99      99.63
100     100.00

再次非常感谢你们俩!

最新更新