Constructing DataFrame from values in variables yields "ValueError: If using all scalar values, you must pass an index"
I have two variables as follows.
a = 2
b = 3
I want to construct a DataFrame from this:
df2 = pd.DataFrame({'A':a, 'B':b})
This generates an error:
ValueError: If using all scalar values, you must pass an index
I tried this also:
df2 = (pd.DataFrame({'a':a, 'b':b})).reset_index()
This gives the same error message. How do I do what I want?
Answers
When constructing a pandas DataFrame
from scalar values, pandas requires an index because it interprets scalar values as needing to be broadcasted across rows. To solve this issue, you can either:
- Wrap the scalar values in a list (which pandas will interpret as single-row data).
- Pass the index explicitly.
Here are two ways you can do this:
1. Wrapping the scalars in a list:
This is the simplest way to convert scalar values into a DataFrame:
import pandas as pd
a = 2
b = 3
df2 = pd.DataFrame({'A': [a], 'B': [b]})
print(df2)
Output:
A B
0 2 3
2. Explicitly passing an index:
Alternatively, you can pass an index if you want more control over the DataFrame structure:
df2 = pd.DataFrame({'A': a, 'B': b}, index=[0])
print(df2)
Output:
A B
0 2 3
Both methods will give you a single-row DataFrame where a
and b
are values in columns A
and B
, respectively.