Concat 2 columns in pandas - AttributeError: 'DataFrame' object has no attribute 'concat'

I am trying to concatenate along 2 columns in pandas. The code :

import pandas as pd import numpy as np from statsmodels import api as sm import pandas_datareader.data as web import datetime start = datetime.datetime(2015,2,12) end = datetime.datetime.today() df = web.get_data_yahoo(['F', '^GSPC'], start, end) df1 = df.concat(columns=[F['Close'], gspc['Close']], axis=1) 

But I am getting the following error:

AttributeError: 'DataFrame' object has no attribute 'concat' 
1

2 Answers

You need to use pd.concat([df1, df2]), because df.concat() doesn't exist.

I'll make you an example:

import pandas as pd df1 = pd.DataFrame(zip(list('bcdfg'), list('aeiou')), columns=['consonants', 'vowels']) df2 = pd.DataFrame(range(5), columns=['numbers']) 
 consonants vowels 0 b a 1 c e 2 d i 3 f o 4 g u 
 numbers 0 0 1 1 2 2 3 3 4 4 
pd.concat([df1, df2], axis=1) 
 consonants vowels numbers 0 b a 0 1 c e 1 2 d i 2 3 f o 3 4 g u 4 
1

As Nicolas mentioned, concat is a top-level function and doesn't have an equivalent pd.DataFrame method. Other than checking the documentation, you can check if there's a concat method by:

import pandas as pd hasattr(pd.DataFrame, 'concat') # False hasattr(pd, 'concat') # True 

The following are the list of top-level functions that don't have an equivalent pd.DataFrame method:

from inspect import getmembers, isfunction {n for n,_ in getmembers(pd, isfunction)} - set(dir(pd.DataFrame)) - set(dir(pd.Series)) 
  • bdate_range, date_range, interval_range, period_range, timedelta_range
  • concat
  • crosstab
  • cut, qcut
  • get_dummies
  • infer_freq
  • json_normalize
  • lreshape
  • merge_asof, merge_ordered
  • read_clipboard, read_csv, read_excel, read_feather, read_fwf, read_gbq, read_hdf, read_html, read_json, read_orc, read_parquet, read_pickle, read_sas, read_spss, read_sql, read_sql_query, read_sql_table, read_stata, read_table, read_xml
  • set_eng_float_format
  • show_versions
  • test
  • to_datetime, to_numeric, to_timedelta
  • wide_to_long

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like