How to append dictionary rows into empty pandas dataframe?

Question:

I have a dataframe df and and empty dataframes df1 and df2.
I am trying to append rows if conditions are true in df1 or df2


##df is my input dataframe

#df1 and df2 are empty dataframe
df1 = pd.DataFrame(columns = df.columns)
df2 = pd.DataFrame(columns = df.columns)


df_dict = df.to_dict('records')
for rows in df_dict:
     if condition1 == true:
       print(rows)
       df1.append(rows, ignore_index = True)

     else:
       print(rows)
       df2.append(rows, ignore_index = True)

print is returning rows but append is empty

Asked By: Shubh

||

Answers:

You need to assign df1 and df2 again for it works, else the value of df1 and df2 will not be updated. Beside, you it must be df1.append, not df1.appned

##df is my input dataframe

#df1 and df2 are empty dataframe
df1 = pd.DataFrame(columns = df.columns)
df2 = pd.DataFrame(columns = df.columns)


df_dict = df.to_dict('records')
for row in df_dict:
    if conditions1 == true:
        print(row)
        df1 = df1.append(row, ignore_index = True)
    else:
        print(row)
        df2 = df2.append(row, ignore_index = True)

print(df1)
Answered By: AnhPC03

Don’t use append cuz it is depreciated. Instead use concat will solve your problem. Also, you do not need to iterate by row

However, I see your problem is not that complicated. It is simply using .loc:

df1 = df.loc[df['col'] == condition, : ].copy()
df2 = df.loc[~(df['col'] == condition), : ].copy()

If df1 and df2 is not empty dataframe, and you want to add rows meeting condition to them:

tem1 = df.loc[df['col'] == condition, : ].copy()
tem2 = df.loc[~(df['col'] == condition), : ].copy()

# df1:
df1 = pd.concat([df1, tem1])

# df2:
df2 = pd.concat([df2, tem2])
Answered By: PTQuoc
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.