我想通过在每行后插入两行来重塑数据框。规则是:
- 第一列使用当前行值。
- 第二行始终使用固定值,例如 0。
- 第三行始终使用 None。
演示代码:
import pandas as pd
data = [
['A',1],
['B',2],
['C',3],
['D',4]
]
df = pd.DataFrame(data,columns=['name','value'])
print(df)
输出:
name value
0 A 1
1 B 2
2 C 3
3 D 4
预期输出:
name value
0 A 1
1 A 0
2 A None
3 B 2
4 B 0
5 B None
6 C 3
7 C 0
8 C None
9 D 4
10 D 0
11 D None
我看到三种选择:
使用
concat
withassign
来更改值,并使用sort_values
/sort_index
来重新排列行:或者:
使用
repeat
复制行和groupby.cumcount
/mask
或位置字典来replace
:使用
assign
创建新列和stack
注意:这可能不适用于
None
未来的 pandas 3。输出:
另一种可能的解决方案是,首先将列
maps
的每个值value
放入所需值的列表中,然后explodes
按列将数据框放入其中value
:输出: