<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Pandas小技巧,計(jì)算數(shù)字最大的那個(gè)列

          共 2273字,需瀏覽 5分鐘

           ·

          2021-12-02 16:44

          群里一個(gè)粉絲問了一個(gè)問題:



          這個(gè)問題比較有趣,如果對pandas了解深入的話,一行代碼就可以搞定:




          代碼粘貼如下:


          In [1]: import pandas as pd
          In [2]: df = pd.DataFrame({})

          In [5]: import numpy as np
          In [6]: df = pd.DataFrame(np.random.randn(10, 5), columns=list("abcde"))
          In [7]: dfOut[7]: a b c d e0 0.096833 0.586116 2.095418 0.315111 -1.6084271 0.865282 1.515651 0.640481 0.307134 0.9048202 -0.858427 0.898042 -0.053222 0.754531 0.6981373 0.396940 0.672170 0.540039 0.208133 1.1802164 -0.088589 -0.667510 0.529450 0.721198 -0.7316565 0.050982 0.054899 -1.441577 0.166684 0.7968986 -1.478824 -0.535030 0.757314 -1.641352 1.9819687 -0.158402 0.182258 1.073073 -0.064057 0.7177348 0.172994 0.559067 0.600873 0.748483 0.7704589 1.595864 -1.583323 0.254628 -1.359222 -0.314586
          In [8]: df["f"] = df.apply(lambda row : sorted(dict(row).items(), key=lambda x : x[1])[-1][0],axis=1)
          In [9]: dfOut[9]: a b c d e f0 0.096833 0.586116 2.095418 0.315111 -1.608427 c1 0.865282 1.515651 0.640481 0.307134 0.904820 b2 -0.858427 0.898042 -0.053222 0.754531 0.698137 b3 0.396940 0.672170 0.540039 0.208133 1.180216 e4 -0.088589 -0.667510 0.529450 0.721198 -0.731656 d5 0.050982 0.054899 -1.441577 0.166684 0.796898 e6 -1.478824 -0.535030 0.757314 -1.641352 1.981968 e7 -0.158402 0.182258 1.073073 -0.064057 0.717734 c8 0.172994 0.559067 0.600873 0.748483 0.770458 e9 1.595864 -1.583323 0.254628 -1.359222 -0.314586 a


          解釋一下這個(gè)代碼:


          1、df.apply

          df.apply(function, axis=1)

          這個(gè)方式,可以按行遍歷df,對每一行使用function函數(shù),這個(gè)function的參數(shù)是一個(gè)series,可以當(dāng)做字典使用;


          2、items

          dict(row).items()

          可以將row這個(gè)series變成一個(gè)字典。字典的items(),那就是[(key, value), (key, value)]這樣的形式,結(jié)果形如:[?('c', 2), ('b', 1), ('a', 3')]


          3、sorted

          sorted(dict(row).items(), key=lambda x : x[1])


          這句,我們將字典進(jìn)行了排序,使用的KEY是每個(gè)元素的第二個(gè)子元素,即原始字典的value,注意,默認(rèn)是升序排列,結(jié)果形如:[('b', 1), ('c', 2), ('a', 3')]


          4、sorted(xx)[-1]

          sorted(dict(row).items(), key=lambda x : x[1])[-1]

          這一句后面加了個(gè)[-1],因?yàn)槭巧蚺帕校?span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;">所有這里取到了最大的值,例如('a', 123)


          5、sorted(xx)[-1][0]

          sorted(dict(row).items(), key=lambda x : x[1])[-1][0]

          這時(shí)候,返回了('a', 123)的第0個(gè)元素,即列名"a"



          這個(gè)代碼做了比較簡化的寫法,大家可以思考下。


          歡迎關(guān)注本公眾號,持續(xù)分享Python、Pandas小案例

          瀏覽 57
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产无码一区二区 | 香蕉视频久久 | 高潮喷水合集www | 国产亚洲色婷婷99 | 三区在线播放 |