【问题标题】:How to concatenate three panda DataFrames with no rows mismatch如何连接三个没有行不匹配的熊猫数据框
【发布时间】:2021-12-11 16:31:29
【问题描述】:

我在将三个 DataFrame 与 Pandas 连接时遇到了一些问题。我的 DataFrame 之一的行与其他两个不一致(请参阅下面的代码和输出):

import requests
import pandas as pd
from bs4 import BeautifulSoup

List = ['LU0526609390:EUR', 'IE00BHBX0Z19:EUR', 'LU1076093779:EUR', 'LU1116896363:EUR']
df = pd.DataFrame(List, columns=['List'])
urls = 'https://markets.ft.com/data/funds/tearsheet/summary?s='+ df['List']

dfs =[]
results = pd.DataFrame()
for url in urls:
    print(url)
    r = requests.get(url).content
    soup = BeautifulSoup(r, 'html.parser')
    elemList = soup.find('title')
    df0 = pd.DataFrame(elemList, columns = ['Fund Name'])
    df0["Fund Name"] = df0["Fund Name"].str.replace("summary - FT.com", "", regex=True)
    table1 = soup.find_all('table')[0]
    table2 = soup.find_all('table')[1]
    df1 = pd.read_html(str(table1), index_col=0)[0].T
    df2 = pd.read_html(str(table2), index_col=0)[0].T
    df = pd.concat([df0, df1, df2], axis=1)
    dfs.append(df)

pd.concat(dfs).to_csv(r'/Users/Test.csv', index=False)    

我的输出如下:

我的 df0 DataFrame 上的行(列:'Fund Name')看起来与我的其他 DataFrame 的行不一致。如果有人能让我知道为什么会这样,将不胜感激。谢谢!

【问题讨论】:

  • 尝试将ignore_index=True 加入到pd.concat 的电话中,看看是否有帮助
  • @Riley 我似乎仍然有同样的问题,但感谢您的评论

标签: python pandas beautifulsoup concatenation


【解决方案1】:

想法是添加Fund Name 列,就像DataFrame.insert 中的第一列一样:

dfs =[]
results = pd.DataFrame()
for url in urls:
    print(url)
    r = requests.get(url).content
    soup = BeautifulSoup(r, 'html.parser')
    elemList = soup.find('title')
    
    table1 = soup.find_all('table')[0]
    table2 = soup.find_all('table')[1]
    df1 = pd.read_html(str(table1), index_col=0)[0].T
    df2 = pd.read_html(str(table2), index_col=0)[0].T
    # print (df2)
    df = pd.concat([df1, df2], axis=1)
    df.insert(0, 'Fund Name', elemList)
    df["Fund Name"] = df["Fund Name"].str.replace("summary - FT.com", "", regex=True)
    dfs.append(df)

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 2014-07-03
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    相关资源
    最近更新 更多