简体   繁体   中英

How to append dictionary rows into empty pandas dataframe?

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

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])

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM