98

I have a function, which returns a dictionary like this:

{'truth': 185.179993, 'day1': 197.22307753038834, 'day2': 197.26118010160317, 'day3': 197.19846975345905, 'day4': 197.1490578795196, 'day5': 197.37179265011116}

I am trying to append this dictionary to a dataframe like so:

output = pd.DataFrame()
output.append(dictionary, ignore_index=True)
print(output.head())

Unfortunately, the printing of the dataframe results in an empty dataframe. Any ideas?

martineau
  • 112,593
  • 23
  • 157
  • 280
cs0815
  • 15,296
  • 39
  • 125
  • 269

2 Answers2

187

You don't assign the value to the result.

output = pd.DataFrame()
output = output.append(dictionary, ignore_index=True)
print(output.head())
alex
  • 1,886
  • 1
  • 6
  • 4
  • 8
    output = output.append(dictionary, ignore_index=True) makes all the difference ... – cs0815 Aug 09 '18 at 20:15
  • 37
    oh. I expected dictionary append to work in place like list append, but it doesn't. – Aaron Bramson Dec 03 '19 at 12:04
  • 4
    As of v 1.4, `append` is deprecated in favor of `concat`. See [here](https://pandas.pydata.org/pandas-docs/stable/whatsnew/v1.4.0.html#whatsnew-140-deprecations-frame-series-append). – user650654 May 03 '22 at 02:28
29

The previous answer (user alex, answered Aug 9 2018 at 20:09) now triggers a warning saying that appending to a dataframe will be deprecated in a future version.

A way to do it is to transform the dictionary to a dataframe and the concatenate the dataframes:

output = pd.DataFrame()
df_dictionary = pd.DataFrame([dictionary])
output = pd.concat([output, df_dictionary], ignore_index=True)
print(output.head())
ZF007
  • 3,521
  • 8
  • 32
  • 45
K. Do
  • 401
  • 4
  • 6
  • this should be the accepted answer. Since the other one (https://stackoverflow.com/a/51775051/7924573) is deprecated. – tschomacker Apr 07 '22 at 13:39