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