【问题标题】:Cannot get Pandas to concat/append无法让 Pandas 连接/追加
【发布时间】:2017-03-15 04:44:00
【问题描述】:

我正在尝试解析网站的表格,但我仍然很笨。对于每个链接,只有第二个表/数据框附加到 SS。有多个链接,因此需要一个 while 循环。使用我能找到的很少的东西,我只是坚持这一点,我很确定这是完全关闭的:

import pandas as pd
from pandas import ExcelWriter
a=1
alist = []
writer = ExcelWriter('name.xlsx')
def dffunc():
    dfs = pd.read_html('http://websitepath{}.htm'.format(a))
    df = dfs[1]
    alist.append(df,ignore_index=True)
    alist = pd.concat(df, axis=0)


while a<9:
    dffunc()
    a+=1
alist.to_excel(writer, index=False)
writer.save()

【问题讨论】:

    标签: python-3.x pandas dataframe append concat


    【解决方案1】:

    df=dfs[1] 获取列表中的第二个表。这就是你想要的吗?

    【讨论】:

      【解决方案2】:

      旧:

      df = dfs[1]
      alist.append(df,ignore_index=True)
      alist = pd.concat(df, axis=0)
      
      • 您正在将 dfs 集合中的第二个表附加到全局 alist
      • 您正在将 dfs 集合中的第二个表分配给 alist,撤消之前的所有步骤
      • 在循环结束时对一次写入文件的全局变量进行操作会破坏循环的目的(给定第二个项目符号);当您写入文件时,alist 只会在最后一个查询中采用第二个表的值

      新:

      import pandas as pd
      from pandas import ExcelWriter
      
      writer = ExcelWriter('name.xlsx')
      writer_kwargs = {'index': False}
      
      A = 9
      
      def dffunc(a):
          dfs = pd.read_html('http://websitepath{}.htm'.format(a))
          return pd.concat(dfs, axis=0)
      
      def dfhandler(df, writer, **kwargs):
          df.to_excel(writer, sheet_name=a, **kwargs)
      
      for a in xrange(1, A):
          dfhandler(dffunc(a), writer, **writer_kwargs)
      
      writer.save()
      

      【讨论】:

      • 此代码对我不起作用。虽然我同意存在我不确定如何解决的范围问题,但很多代码都是来自其他人描述的方法以及我的代码开始时的大杂烩。感谢您迄今为止的帮助
      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2012-11-12
      • 1970-01-01
      • 2012-02-14
      相关资源
      最近更新 更多