根据列值生成行数 – Pandas/Python
我想根据两列 (index_start和index_end) 中的数值扩展我的数据框。我的 df 看起来像这样:
item index_start index_end
A 1 3
B 4 7
我希望它扩展以创建从 1 到 3 的 A 行和从 4 到 7 的 B 行,就像这样。
item index_start index_end index
A 1 3 1
A 1 3 2
A 1 3 3
B 4 7 4
B 4 7 5
B 4 7 6
B 4 7 7
不确定如何在 Python/pandas 中实现这一点。
回答
你可以用 .explode()
df['index'] = df.apply(lambda row: list(range(row['index_start'], row['index_end']+1)), axis=1)
df.explode('index')
item index_start index_end index
0 A 1 3 1
0 A 1 3 2
0 A 1 3 3
1 B 4 7 4
1 B 4 7 5
1 B 4 7 6
1 B 4 7 7