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.