微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用pandas在多个工作表中查找最小值

如何在整个工作表中找到每个索引的多个工作表中的最小值

假设,

  worksheet 1

    index    A   B   C
       0     2   3   4.28
       1     3   4   5.23
    worksheet 2

    index    A   B   C
        0    9   6   5.9
        1    1   3   4.1

    worksheet 3

    index    A   B   C
        0    9   6   6.0
        1    1   3   4.3
 ...................(Worksheet 4,Worksheet 5)...........
by comparing C column, I want an answer, where dataframe looks like

index      min(c)
    0       4.28
    1       4.1

解决方法:

from functools import reduce

reduce(np.fmin, [ws1.C, ws2.C, ws3.C])

index
0    4.28
1    4.10
Name: C, dtype: float64

这很好地概括了理解

reduce(np.fmin, [w.C for w in [ws1, ws2, ws3, ws4, ws5]])

如果您必须坚持您的列名称

from functools import reduce

reduce(np.fmin, [ws1.C, ws2.C, ws3.C]).to_frame('min(C)')

       min(C)
index        
0        4.28
1        4.10

您还可以在字典上使用pd.concat,并将pd.Series.min与level = 1参数一起使用

pd.concat(dict(enumerate([w.C for w in [ws1, ws2, ws3]]))).min(level=1)
# equivalently
# pd.concat(dict(enumerate([w.C for w in [ws1, ws2, ws3]])), axis=1).min(1)

index
0    4.28
1    4.10
Name: C, dtype: float64

注意:

dict(enumerate([w.C for w in [ws1, ws2, ws3]]))

是另一种说法

{0: ws1.C, 1: ws2.C, 2: ws3.C}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐