【问题标题】:Populating a Pandas dataframe with data from a list in a unique order of indexes?用索引的唯一顺序列表中的数据填充 Pandas 数据框?
【发布时间】:2017-11-16 18:16:39
【问题描述】:

所以我从一个美国职业棒球大联盟博彩网站聚合器中抓取数据,并将我的数据点放在两个列表中。第一个列表是所有团队。它的格式化方式是 teamlist[1] 和 teamlist[2] 互相比赛,然后 teamlist[3] 和 teamlist[4] 互相比赛,依此类推。每个行索引是一个团队,每个列索引是一个投注站点。

     site1|site2|site3|site4|...
team1
team2
team3
team4
...

这概括了一般形式。

我已经弄清楚了我需要将每个投注奇数放入其中的模式,但我无法弄清楚正确输入它们的方法。

我很抱歉,我不需要声誉来发布实际图像,所以我必须改为link。这概述了我需要索引的结构。数据点是我需要去那里的索引。如您所见,df[0,0] = moneylines[0] 和 df[0,1]= moneylines[1]。我的主要问题是,一旦我通过前两行(在同一个循环中完成)并尝试转到第三行,它会重新索引前两行。link

这是我目前用来填充 DataFrame 的代码。 moneylines 是我试图填充数据框的投注赔率列表,而 teams 是行索引:

ctr = 0
for t in range(0,int(len(teams)/2)): for m in range(14): df.ix[m,t] = moneylines[ctr] df.ix[m,t+1] = moneylines[ctr+1] ctr = ctr + 2

如果我还可以提供任何其他内容来帮助解决这个问题,请告诉我。

【问题讨论】:

    标签: python python-2.7 python-3.x pandas dataframe


    【解决方案1】:

    您的问题是由于您的第一个 for 循环造成的。您将其一一递增:

    第一个循环:

    • t = 0
    • 您填写第 0 行和 第 1 行

    然后

    • t = 1
    • 您填写第 1 行和第 2 行

    等等……

    你应该使用而不是:

    for t in range(0,int(len(teams)/2)):
    

    这个:

    for t in range(0, len(teams), 2)
    

    注意:您也可以在索引中将 t 乘以 2,但这不像使用上述解决方案那样逻辑

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。我尝试了这个解决方案,认为它会起作用,而且我非常有信心(有点高兴)。然而值仍然被正确附加,我什至添加了一个打印语句来打印每个循环当前索引,以及附加到它的内容。打印语句都打印正确的索引被放置在正确的位置,但由于某种原因,数据框仍然不正确。
    • 没关系,我没有意识到每秒发生多少几率变化,这就是数据帧与实时数据不匹配的原因。谢谢你的回答。
    【解决方案2】:

    我发布了一种替代循环数据帧值的方法,您可以在这里很容易地避免这种情况,因为这样做首先会失去使用数据帧的效率提升。

    我并不完全清楚你的起始数据的格式是什么,但如果你有一个系列 s 的值从 0 到 195:

    s = pd.Series(range(196))
    

    然后,使用numpy.reshape 你可以得到配对:

    >>>s.values.reshape((len(s)//2, 2))
    array([[  0,   1],
           [  2,   3],
           [  4,   5],
           ..., 
           [190, 191],
           [192, 193],
           [194, 195]])
    

    再次使用它可以获得所需的输出:

    >>>pd.DataFrame(s.values.reshape((len(s)//2, 2)).T.reshape((len(s)//14, 14))).sort_values(0)
         0    1    2    3    4    5    6    7    8    9    10   11   12   13
    0     0    2    4    6    8   10   12   14   16   18   20   22   24   26
    7     1    3    5    7    9   11   13   15   17   19   21   23   25   27
    1    28   30   32   34   36   38   40   42   44   46   48   50   52   54
    8    29   31   33   35   37   39   41   43   45   47   49   51   53   55
    2    56   58   60   62   64   66   68   70   72   74   76   78   80   82
    9    57   59   61   63   65   67   69   71   73   75   77   79   81   83
    3    84   86   88   90   92   94   96   98  100  102  104  106  108  110
    10   85   87   89   91   93   95   97   99  101  103  105  107  109  111
    4   112  114  116  118  120  122  124  126  128  130  132  134  136  138
    11  113  115  117  119  121  123  125  127  129  131  133  135  137  139
    5   140  142  144  146  148  150  152  154  156  158  160  162  164  166
    12  141  143  145  147  149  151  153  155  157  159  161  163  165  167
    6   168  170  172  174  176  178  180  182  184  186  188  190  192  194
    13  169  171  173  175  177  179  181  183  185  187  189  191  193  195
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2017-04-03
      • 1970-01-01
      • 2019-12-09
      • 2021-11-22
      相关资源
      最近更新 更多