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
CodePudding user response:
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])
CodePudding user response:
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)