我有一个由下面的脚本生成的数据框 - 引入数据框“数据”。
理想情况下,我想生成一个新的数据帧,它结合了 id 和 1 : 值的序列。
d = {'id': ['a', 'b','c'], 'value': [1, 2,1]}
data = pd.DataFrame(data=d)
data
这意味着理想的输出是:
|------|---------|
| ID | value |
|------|---------|
| a | 1 |
| b | 1 |
| b | 2 |
| c | 1 |
|------|---------|
最佳答案
使用Index.repeat
按列 value
并按计数器重新分配值 GroupBy.cumcount
:
#if not default RangeIndex
#data = data.reset_index(drop=True)
df = data.loc[data.index.repeat(data['value'])]
df['value'] = df.groupby(level=0).cumcount() + 1
df = df.reset_index(drop=True)
print (df)
id value
0 a 1
1 b 1
2 b 2
3 c 1
替代解决方案 DataFrame.assign
:
df = (data.loc[data.index.repeat(data['value'])]
.assign(value=lambda x: x.groupby(level=0).cumcount() + 1)
.reset_index(drop=True))
关于python - 如何根据数据帧值生成新的Python数据帧系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57075168/