In [14]:
import pandas as pd
import os  # Make sure to import the os module

# https://data.bis.org/topics/CBTA

urls = [
"https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.AE+AR+AT+AU+BE+BR+CA+CH+CL+CN+CZ+DE+DK+EE+ES+FI+FR+GB+GR+HK+HR+HU+ID+IE+IL+IN+IT+JP+KR+LT+LU+LV+MK+MX+MY+NL+NO+NZ+PE+PH+PL+PT+US+SA+SE+SG+SI+SK+TH+TR+XM+ZA.B.USD+XDF_R_B1GQ._Z.B?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.AE.B.XDC.AED.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.AR.B.XDC.ARS.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.AT+BE+DE+EE+ES+FI+FR+GR+IE+IT+LT+LU+LV+NL+PT+SI+SK+XM.B.XDC.EUR.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.AU.B.XDC.AUD.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.BR.B.XDC.BRL.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.CA.B.XDC.CAD.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.CH.B.XDC.CHF.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.CL.B.XDC.CLP.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.CN.B.XDC.CNY.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.CZ.B.XDC.CZK.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.DK.B.XDC.DKK.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.HK.B.XDC.HKD.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.HR.B.XDC.HRK.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.HU.B.XDC.HUF.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.ID.B.XDC.IDR.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.IL.B.XDC.ILS.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.IN.B.XDC.INR.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.JP.B.XDC.JPY.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.KR.B.XDC.KRW.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.MK.B.XDC.MKD.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.MX.B.XDC.MXN.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.MY.B.XDC.MYR.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.NO.B.XDC.NOK.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.NZ.B.XDC.NZD.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.PE.B.XDC.PEN.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.PH.B.XDC.PHP.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.PL.B.XDC.PLN.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.SA.B.XDC.SAR.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.SE.B.XDC.SEK.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.SG.B.XDC.SGD.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.TH.B.XDC.THB.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.TR.B.XDC.TRY.B+N?format=csv","https://stats.bis.org/api/v2/data/dataflow/BIS/WS_CBTA/1.0/Q.ZA.B.XDC.ZAR.B+N?format=csv"
]

dataframes = []

for url in urls:
    try:
        df = pd.read_csv(url)
        dataframes.append(df)
    except Exception as e:
        print(f"Failed to read {url}: {e}")

if dataframes:
    df = pd.concat(dataframes)
    print("Data successfully concatenated.")
    
    # Check and convert string columns to a maximum length of 244
    for col in df.select_dtypes(include=['object']).columns:
        df[col] = df[col].astype(str).str.slice(0, 244)
    
    # Specify the folder where you want to save the file
    folder_path = "C:/Users/jamel/Dropbox/Jupyter"  # Change this to your desired folder path
    
    # Ensure the folder exists
    if not os.path.exists(folder_path):
        os.makedirs(folder_path)
    
    # Full file path
    file_path = os.path.join(folder_path, "concatenated_data.dta")
    
    # Attempt to export to Stata
    try:
        df.to_stata(file_path, write_index=False)
        print(f"Data successfully exported to {file_path}")
    except ValueError as e:
        print(f"Error exporting to Stata: {e}")
else:
    print("No data was loaded.")
Data successfully concatenated.
Data successfully exported to C:/Users/jamel/Dropbox/Jupyter\concatenated_data.dta
In [ ]: