我有一个 Dataframe ,以下列格式如下:
df = pd.DataFrame(data={
'value': [123, 456, 789, 111, 121, 34523, 4352, 45343, 623]
'repeatVal': ['NaN', 2, 'NaN', 'NaN', 3, 'NaN', 'NaN', 'NaN', 'NaN'],
})
我想创建一个新列,它从'value'中获取值,并从'repeatVal'向下重复它的次数,这样输出看起来就像'result':
df = pd.DataFrame(data={
'value': [123, 456, 789, 111, 121, 34523, 4352, 45343, 623]
'repeatVal': ['NaN', 2, 'NaN', 'NaN', 3, 'NaN', 'NaN', 'NaN', 'NaN'],
'result': ['NaN', 456, 456, 'NaN', 121, 121, 121, 'NaN', 'NaN']
})
需要说明的是,我不想复制行,我只想创建一个新列,其中的值重复n次,n在不同的列中指定。列'repeatVals'的格式是这样的,即永远不会有重叠--在'repeatVals'中的重复指示符之间总是有足够的NaN值
我已经阅读了np.repeat和np.tile的文档,但这些文档似乎没有解决这个问题。
2条答案
按热度按时间vuktfyat1#
使用
groupby.cumcount
作为遮罩的一个选项:输出:
中间体:
wn9m85ua2#
下面是使用
index.repeat
的方法输出: