satya kapoor
satya kapoor

Reputation: 47

Is there a way to concat a data frame in a for loop

I trying to loop a function for each column to transform it and concatenate it back to the main data frame. But I am only getting the last loop output.

import pandas as pd

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))

columns = ['A','B']

def run_all(x):
    x = x*2
    return x

df_summary = pd.DataFrame()

for column in columns:
    df0 = df[column]
    df__ = []
    for each_row in df0:
        df__.append(run_all(each_row))
    df_summary  = pd.concat([df, pd.DataFrame({'Summary_' + column: df__})], axis=1)

df_final = pd.DataFrame(df_summary)

print(df_final)

Upvotes: 1

Views: 253

Answers (1)

hongkail
hongkail

Reputation: 789

Do you want to try the following:-

df_summary = df.copy()

for column in columns:
    df0 = df[column]
    df__ = []
    for each_row in df0:
        df__.append(run_all(each_row))
    df_summary['Summary_{}'.format(column)] = pd.DataFrame({'Summary_' + column: df__}).values

print(df_summary)

output:

enter image description here

Upvotes: 1

Related Questions