Home > other >  Insert Row in Dataframe at certain place
Insert Row in Dataframe at certain place

Time:12-15

I have the following Dataframe: Dataframe

Now i want to insert an empty row after every time the column "Zweck" equals 7. So for example the third row should be an empty row.

CodePudding user response:

import numpy as np
import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [1, 2, 3, 4, 5], 'f': [1, 7, 3, 4, 7]})
ren_dict = {i: df.columns[i] for i in range(len(df.columns))}

ind = df[df['f'] == 7].index
df = pd.DataFrame(np.insert(df.values, ind, values=[33], axis=0))
df.rename(columns=ren_dict, inplace=True)

ind_empt = df['a'] == 33
df[ind_empt] = ''

print(df)

Output

   a  b  f
0  1  1  1
1         
2  2  2  7
3  3  3  3
4  4  4  4
5         
6  5  5  7

Here the dataframe is overwritten, as the append operation will be resource intensive. As a result, the required strings with values 33 appear. This is necessary because np.insert does not allow string values to be substituted. Columns are renamed to their original state with: df.rename. Finally, we find lines with df['a'] == 33 to set to empty values.

  • Related