【问题标题】:Pandas in python: Why is it printing "Empty DataFrame" and how do I stop it?python中的熊猫:为什么它打印“空数据框”,我该如何阻止它?
【发布时间】:2021-03-12 10:40:12
【问题描述】:

我正在尝试从 HTML 表中的 3 列中获取 3 个字符串,但输出始终如下所示:

空数据框 列:[0] 指数: [] 空数据框 列:[o] 指数: [] 空数据框 栏目:[1] 索引:[]

这是我的代码:

import pandas as pd

df = pd.read_html('http://wiimmfi.de/stats/game/mprimeds', skiprows = [0], encoding = 'utf-8')

df[0].columns
ls_stat = df[0]["ls​_​stat"].to_string(index = False)
ol_stat = df[0]["ol​_​stat"].to_string(index = False)
status = df[0]["status"].to_string(index = False)

print(ls_stat)
print(ol_stat)
print(status)

尽管表的第 0 行有值,但它仍然为每个字符串打印“空数据帧列:[] 索引:[]”。我只希望输出是:

0 ○ 1

只包含表中的值。

如何阻止 pandas 打印其余部分?这是网站上的表格的样子: https://i.stack.imgur.com/6L909.png

【问题讨论】:

    标签: python html pandas dataframe


    【解决方案1】:

    我运行了你的代码,这就是我得到的。您可以打印df[0],格式如下:

    from tabulate import tabulate
    print(tabulate(df[0], headers = 'keys'))
    

    它看起来像这样。至少有两行。

        ('id4', 'AMHE')      ('pid', '600959457')  ('fc', '3871-4801-6097')    ('host', '—')    ('gid', '—')      ('ls\u200b_\u200bstat', '0')  ('ol\u200b_\u200bstat', 'og')      ('status', '2')  ('suspend', '—')      ('n', '1')  ('name1', 'りー')    ('name2', '—')
    --  -----------------  ----------------------  --------------------------  ---------------  --------------  ------------------------------  -------------------------------  -----------------  ------------------  ------------  -------------------  ----------------
     0  AMHE                            601081334  5159-9715-6854              —                —                                            0  o                                                6  —                              1  ュoco×èno™           —
     1  AMHE                            601087019  0564-3566-1867              —                —                                            0  og                                               2  —                              1  atrueboss            —
    

    我们还注意到列是一个多索引——每个标签都是一个元组,而不是一个简单的名称。我们可以通过打印df[0].columns(您已经在代码中执行此操作)进行仔细检查:

    
    MultiIndex([(      'id4',           'AMHE'),
                (      'pid',      '600959457'),
                (       'fc', '3871-4801-6097'),
                (     'host',              '—'),
                (      'gid',              '—'),
                ('ls​_​stat',              '0'),
                ('ol​_​stat',             'og'),
                (   'status',              '2'),
                (  'suspend',              '—'),
                (        'n',              '1'),
                (    'name1',             'りー'),
                (    'name2',              '—')],
               )
    

    所以要到达您想要的第一列,我们这样做(注意我们在上面从 df[0].columns 计算出的索引 ('ls​_​stat','0')

    print(df[0][('ls​_​stat','0')].to_string(index = False))
    

    所以我们得到

     0
     0
    

    正如预期的那样。

    对于ol_stat,我们使用相同的技巧

    print(df[0][('ol​_​stat','og')].to_string(index = False))
    

    我们得到

      o
     og
    

    正如预期的那样。以此类推。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多