6

I have two lists, such as:

list_columns = ['a','b','c','d','e','f','g','h','k','l','m','n']

and a list of values

list_values = [11,22,33,44,55,66,77,88,99,100, 111, 222]

I want to create a Pandas dataframe using list_columns as columns.

I tried with df = pd.DataFrame(list_values, columns=list_columns) but it doesn't work

I get this error: ValueError: Shape of passed values is (1, 12), indices imply (12, 12)

Alex
  • 1,447
  • 7
  • 23
  • 48

3 Answers3

10

A dataframe is a two-dimensional object. To reflect this, you need to feed a nested list. Each sublist, in this case the only sublist, represents a row.

df = pd.DataFrame([list_values], columns=list_columns)

print(df)

#     a   b   c   d   e   f   g   h   k    l    m    n
# 0  11  22  33  44  55  66  77  88  99  100  111  222

If you supply an index with length greater than 1, Pandas broadcasts for you:

df = pd.DataFrame([list_values], columns=list_columns, index=[0, 1, 2])

print(df)

#     a   b   c   d   e   f   g   h   k    l    m    n
# 0  11  22  33  44  55  66  77  88  99  100  111  222
# 1  11  22  33  44  55  66  77  88  99  100  111  222
# 2  11  22  33  44  55  66  77  88  99  100  111  222
jpp
  • 159,742
  • 34
  • 281
  • 339
5

If I understand your question correctly just wrap list_values in brackets so it's a list of lists

list_columns = ['a','b','c','d','e','f','g','h','k','l','m','n']
list_values = [[11,22,33,44,55,66,77,88,99,100, 111, 222]]

pd.DataFrame(list_values, columns=list_columns)
    a   b   c   d   e   f   g   h   k    l    m    n
0  11  22  33  44  55  66  77  88  99  100  111  222
dsbailey
  • 108
  • 1
  • 1
  • 9
2

from your list you can do like below:

df = pd.DataFrame(list_values) 
df=df.T
df.columns=list_columns
>>df

    a   b   c   d   e   f   g   h   k    l    m    n
0  11  22  33  44  55  66  77  88  99  100  111  222
anky
  • 74,114
  • 11
  • 41
  • 70