0
votes

Comment ajouter deux objets de données contenant les mêmes données de colonnes, mais différents noms de colonne?

Je veux apporter une dépense DF à un revenu df mais ne peut pas le faire correctement. Quelqu'un peut-il offrir comment je peux faire cela?

'' ' P>

import pandas as pd
import lxml
from lxml import html

import requests
import numpy as np

symbol = 'MFC'
url = 'https://www.marketwatch.com/investing/stock/'+ symbol +'/financials'
df=pd.read_html(url)
revenue = pd.concat(df[0:1]) # the revenue dataframe obj
revenue = revenue.dropna(axis='columns') # drop naN column
header = revenue.iloc[:0] # revenue df header row
expense = pd.concat(df[1:2]) # the expense dataframe obj
expense = expense.dropna(axis='columns') # drop naN column

statement = revenue.append(expense) #results in a dataframe with an added column (Unnamed:0)

revenue = pd.concat(df[0:1]) =
Fiscal year is January-December. All values CAD millions.
2015
2016
2017
2018
2019

expense = pd.concat(df[1:2]) =
Unnamed: 0
2015
2016
2017
2018
2019
'''


0 commentaires

3 Réponses :


1
votes

Renommez des colonnes.

df = df.rename(columns={'old_name': 'new_name',})


3 commentaires

N'utilisez pas de tuple pour les colonnes.


Dave Expense = Expense.Rename (Colonnes = ('Sans nom: 0': 'LineItem')) Résultats de la syntaxe


{'Sans nom: 0': 'LineItem'} non ('Sans nom: 0': 'LineItem')



0
votes

J'ai réussi à ajouter les DataFrames avec le code suivant. Merci David pour me mettre sur la bonne voie. J'admets que ce n'est pas la meilleure façon de le faire car dans un environnement de temps d'exécution, je ne connais pas la valeur du texte à renommer et que j'ai mal codé ici. Idéalement, il serait préférable de faire référence à un espace réservé à DF.ILOC [: 0,0] au lieu de cela, mais je passe une période difficile à faire fonctionner.

df=pd.read_html(url)
revenue = pd.concat(df[0:1])
revenue = revenue.dropna(axis='columns')
revenue.rename({'Fiscal year is January-December. All values CAD millions.':'LineItem'},axis=1,inplace=True)
header = revenue.iloc[:0]
expense = pd.concat(df[1:2])
expense = expense.dropna(axis='columns')
expense.rename({'Unnamed: 0':'LineItem'}, axis=1, inplace=True)
statement = revenue.append(expense,ignore_index=True)


0 commentaires

0
votes

Utilisation de la construction DF = PD.READAD_HTML (URL), plusieurs listes sont renvoyées lors de la grattant des fonds financiers de marché. La fonction ci-dessous renvoie un seul Dataframe de tous les éléments de bilan. Le même code s'applique aux déclarations trimestrielles et annuelles du revenu et des flux de trésorerie.

def getBalanceSheet(url):
    df=pd.read_html(url)
    count = sum([1 for Listitem in df if 'Unnamed: 0' in Listitem])
    statement = pd.concat(df[0:1])
    statement = statement.dropna(axis='columns')
    if 'q' in url: #quarterly 
        statement.rename({'All values CAD millions.':'LineItem'},axis=1,inplace=True)
    else:
        statement.rename({'Fiscal year is January-December. All values CAD millions.':'LineItem'},axis=1,inplace=True)
    for rowidx in range(count):
        df_name = 'df_'+str(int(rowidx))
        df_name = pd.concat(df[rowidx+1:rowidx+2])
        df_name = df_name.dropna(axis='columns')
        df_name.rename({'Unnamed: 0':'LineItem'}, axis=1, inplace=True)
        statement = statement.append(df_name,ignore_index=True)
    return statement


0 commentaires