Search code examples
pythondataframeinsertrow

Insert Row in Dataframe at certain place


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.


Solution

  • 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.