MEHMET BALIOGLU

# If using all scalar values you must pass an index

## The Problem:

When you try to create a pandas dataframe using only scalar values without passing an index, you will get a ValueError: If using all scalar values, you must pass an index. In this article, I will provide an explanation of the problem and three easy and different solutions.

First, let’s understand the root cause of this error : “If using all scalar values, you must pass an index“. We can more or less understand that we need to create an index, but what is a scalar value anyway? Let me explain: there are arrays and scalars in Python and, to put it simply, a scalar is one of the things you put in an array.  In other words, a scalar is a “single” value. It may be an integer, a boolean (True, False) or a string.

THESE ARE SCALARS:

a = 1

b= True

c= “why not”

AND THIS IS AN ARRAY:

an_array = [1 ,True,”hi”]

If you are trying to create a Pandas dataframe using only scalar values, then Python interpreter will tell you this: If using all scalar values, you must pass an index!

Example:

``````df_oh_my = pd.DataFrame({
'col_1' : 1,
'col_2' : True,
'col_3' : 'why not'
}
)
print(df_oh_my)

#print DataFrame

ValueError: If using all scalar values, you must pass an index``````

In order to solve ValueError: If using all scalar values, you must pass an index, we have at least 3 options:

## Solution 1: If using all scalar values you must pass an index

If you want to convert a dictionary of scalars without getting a ValueError, you have to pass an index. It is simple:

``````df_oh_my = pd.DataFrame({
'col_1' : 1,
'col_2' : True,
'col_3' : 'why not'
},
index=
)
print(df_oh_my)

#print DataFrame
col_1  col_2    col_3
0       1   True  why not``````

It doesn’t have to be index=. You can name it whatever you want, for example: index= , index=[“x”]. But if you use multiple values, the dataframe row is going to be duplicated:

``````df_oh_my = pd.DataFrame({
'col_1' : 1,
'col_2' : True,
'col_3' : 'why not'
},
index=[0,1,2]
)
print(df_oh_my)

#print DataFrame

col_1  col_2    col_3
0       1   True  why not
1       1   True  why not
2       1   True  why not``````

## Solution 2: Wrap your dictionary into a list:

By wrapping your dictionary into a list, you can get rid of the ValueError: If using all scalar values, you must pass an index. In order to do this, just use square brackets [ ] .

``````df_oh_my = pd.DataFrame([{
'col_1' : 1,
'col_2' : True,
'col_3' : 'why not'
}]
)
print(df_oh_my)``````

## Solution 3: Convert your dictionary to Series and transpose

``````#dict is a dictionary
dict= {
'col_1' : 1,
'col_2' : True,
'col_3' : 'why not'
}

# first convert to series by using pd.Series
# secondly, convert to dataframe
# thirdly, transpose using T
df_oh_my = pd.DataFrame(pd.Series(dict)).T
print(df_oh_my)``````