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.