I would like to reshape dataframe by insert two rows after each row. the rule is:
Demo code:
import pandas as pd
data = [
['A',1],
['B',2],
['C',3],
['D',4]
]
df = pd.DataFrame(data,columns=['name','value'])
print(df)
output:
name value
0 A 1
1 B 2
2 C 3
3 D 4
Expected output:
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
Another possible solution, which first maps
each value of value
column to a list of the wanted values and then explodes
the dataframe by the value
column:
df.assign(value = df['value'].map(lambda x: [x, 0, None])).explode('value')
Output:
name value
0 A 1
0 A 0
0 A None
1 B 2
1 B 0
1 B None
2 C 3
2 C 0
2 C None
3 D 4
3 D 0
3 D None