首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫行指数集列值差的计算

熊猫行指数集列值差的计算
EN

Stack Overflow用户
提问于 2017-11-27 11:29:03
回答 3查看 211关注 0票数 1

假设我有下表:

代码语言:javascript
复制
+----+---------+--------+---------+---------+---------+---------+-----------+-----------+-----------+----------+-----------+------------+------------+---------+---+
|  1 | 0.72694 | 1.4742 | 0.32396 | 0.98535 |       1 | 0.83592 | 0.0046566 | 0.0039465 |   0.04779 |  0.12795 |  0.016108 |  0.0052323 | 0.00027477 |  1.1756 | 1 |
|  2 | 0.74173 | 1.5257 | 0.36116 | 0.98152 | 0.99825 | 0.79867 | 0.0052423 | 0.0050016 |   0.02416 | 0.090476 | 0.0081195 |   0.002708 | 7.48E-05   | 0.69659 | 1 |
|  3 | 0.76722 | 1.5725 | 0.38998 | 0.97755 |       1 | 0.80812 | 0.0074573 |  0.010121 |  0.011897 | 0.057445 | 0.0032891 | 0.00092068 | 3.79E-05   | 0.44348 | 1 |
|  4 | 0.73797 | 1.4597 | 0.35376 | 0.97566 |       1 | 0.81697 | 0.0068768 | 0.0086068 |   0.01595 | 0.065491 | 0.0042707 |  0.0011544 | 6.63E-05   | 0.58785 | 1 |
|  5 | 0.82301 | 1.7707 | 0.44462 | 0.97698 |       1 | 0.75493 |  0.007428 |  0.010042 | 0.0079379 | 0.045339 | 0.0020514 | 0.00055986 | 2.35E-05   | 0.34214 | 1 |
|  7 | 0.82063 | 1.7529 | 0.44458 | 0.97964 | 0.99649 |  0.7677 | 0.0059279 | 0.0063954 |  0.018375 | 0.080587 | 0.0064523 |  0.0022713 | 4.15E-05   | 0.53904 | 1 |
|  8 | 0.77982 | 1.6215 | 0.39222 | 0.98512 | 0.99825 | 0.80816 | 0.0050987 | 0.0047314 |  0.024875 | 0.089686 | 0.0079794 |  0.0024664 | 0.00014676 | 0.66975 | 1 |
|  9 | 0.83089 | 1.8199 | 0.45693 |  0.9824 |       1 | 0.77106 | 0.0060055 |  0.006564 | 0.0072447 | 0.040616 | 0.0016469 | 0.00038812 | 3.29E-05   | 0.33696 | 1 |
| 11 |  0.7459 | 1.4927 | 0.34116 | 0.98296 |       1 | 0.83088 | 0.0055665 | 0.0056395 | 0.0057679 | 0.036511 | 0.0013313 | 0.00030872 | 3.18E-05   | 0.25026 | 1 |
| 12 | 0.79606 | 1.6934 | 0.43387 | 0.98181 |       1 | 0.76985 | 0.0077992 |  0.011071 |  0.013677 | 0.057832 | 0.0033334 | 0.00081648 | 0.00013855 | 0.49751 | 1 |
+----+---------+--------+---------+---------+---------+---------+-----------+-----------+-----------+----------+-----------+------------+------------+---------+---+

我有两套行索引:

set1 =1,3,5,8 9

set2 = 2,4,7,10,10

注:在这里,我已经指出了第一行的索引值为1。这两个集合的长度应该总是相同的。

我要找的是一种快速而又节奏式的方法,可以得到相应的行指数的列值的差异,即: 1-2,3-4,5-7,8-10,9-10的差。

对于这个例子,我的结果数据this如下:

代码语言:javascript
复制
+---+---------+--------+---------+---------+---------+---------+-----------+-----------+-----------+----------+-----------+------------+------------+---------+---+
| 1 | 0.01479 | 0.0515 |  0.0372 | 0.00383 | 0.00175 | 0.03725 | 0.0005857 | 0.0010551 |   0.02363 | 0.037474 | 0.0079885 |  0.0025243 | 0.00019997 | 0.47901 | 0 |
| 1 | 0.02925 | 0.1128 | 0.03622 | 0.00189 |       0 | 0.00885 | 0.0005805 | 0.0015142 |  0.004053 | 0.008046 | 0.0009816 | 0.00023372 |  0.0000284 | 0.14437 | 0 |
| 3 | 0.04319 | 0.1492 |  0.0524 | 0.00814 | 0.00175 | 0.05323 | 0.0023293 | 0.0053106 | 0.0169371 | 0.044347 |  0.005928 | 0.00190654 | 0.00012326 | 0.32761 | 0 |
| 3 | 0.03483 | 0.1265 | 0.02306 | 0.00059 |       0 | 0.00121 | 0.0017937 |  0.004507 | 0.0064323 | 0.017216 | 0.0016865 | 0.00042836 | 0.00010565 | 0.16055 | 0 |
| 1 | 0.05016 | 0.2007 | 0.09271 | 0.00115 |       0 | 0.06103 | 0.0022327 | 0.0054315 | 0.0079091 | 0.021321 | 0.0020021 | 0.00050776 | 0.00010675 | 0.24725 | 0 |
+---+---------+--------+---------+---------+---------+---------+-----------+-----------+-----------+----------+-----------+------------+------------+---------+---+

我得到的差值在这里是绝对的。

我不能应用diff(),因为行索引可能不是连续的。我目前正在通过循环通过设置实现我的目标。

有熊猫做这个的把戏吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-27 11:38:17

使用基于loc的索引-

代码语言:javascript
复制
df.loc[set1].values - df.loc[set2].values

确保len(set1)等于len(set2)。此外,请记住setXlist对象的一个违反直觉的名称。

票数 3
EN

Stack Overflow用户

发布于 2017-11-27 11:37:43

您需要通过data reindexing进行选择,然后减去:

代码语言:javascript
复制
df =  df.reindex(set1) - df.reindex(set2).values

lociloc将引发未来的警告,因为通过list- .loc或任何缺少标签的[]将在将来引发KeyError

票数 2
EN

Stack Overflow用户

发布于 2017-11-27 11:34:12

简而言之,请尝试以下几点:

代码语言:javascript
复制
df.iloc[::2].values - df.iloc[1::2].values

PS:或者,如果(就像在你的问题中那样,索引不遵循简单的规则):

代码语言:javascript
复制
df.iloc[set1].values - df.iloc[set2].values
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47509934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档