Pandas Dataframe adding muliple empty row issue
Question:
I have test the code to add multiple empty row to Pandas DataFrame it worked.
import pandas as pd
df = pd.DataFrame({'name': ["James", "White", "John"],
'rebounds': [7, 7, 8]})
for i in range(100):
dft = df.columns.values.tolist()
s = pd.Series(dft)
df.loc[len(df)] =s
print(len(df.index))
In my application I have this code, its adding 16 empty rows but it adds only 4 rows.
print(f"Before adding {len(df3.index)}")
dft = df3.columns.values.tolist()
s = pd.Series(dft)
for i in range(16):
df3.loc[len(df3)] =s
print(f"After adding {len(df3.index)}")
Output
Before adding 221
After adding 225
why its not adding 16 empty rows in my application code? How to troubleshoot this issue?
Thanks
Answers:
You might have duplicated indices. For example if you array has 221 rows but an indice 222, no row will be added.
A more robust method could be to concat
:
N = 4
df = pd.concat([df, pd.DataFrame(columns=df.columns,
index=range(len(df), len(df)+N))
])
output:
name rebounds
0 James 7
1 White 7
2 John 8
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 NaN NaN
I have test the code to add multiple empty row to Pandas DataFrame it worked.
import pandas as pd
df = pd.DataFrame({'name': ["James", "White", "John"],
'rebounds': [7, 7, 8]})
for i in range(100):
dft = df.columns.values.tolist()
s = pd.Series(dft)
df.loc[len(df)] =s
print(len(df.index))
In my application I have this code, its adding 16 empty rows but it adds only 4 rows.
print(f"Before adding {len(df3.index)}")
dft = df3.columns.values.tolist()
s = pd.Series(dft)
for i in range(16):
df3.loc[len(df3)] =s
print(f"After adding {len(df3.index)}")
Output
Before adding 221
After adding 225
why its not adding 16 empty rows in my application code? How to troubleshoot this issue?
Thanks
You might have duplicated indices. For example if you array has 221 rows but an indice 222, no row will be added.
A more robust method could be to concat
:
N = 4
df = pd.concat([df, pd.DataFrame(columns=df.columns,
index=range(len(df), len(df)+N))
])
output:
name rebounds
0 James 7
1 White 7
2 John 8
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 NaN NaN