簡體   English   中英

根據分組 dataframe 中列的前兩個值的差異獲取子數據幀

[英]Getting sub-dataframe based on difference of top two values of a column in grouped dataframe

我有一個 dataframe df為:

  Election Year     Votes   Vote %      Party              Region   
0   2000            42289   29.40   Janata Dal (United)     A
1   2000            27618   19.20   Rashtriya Janata Dal    A
2   2000            20886   14.50   Bahujan Samaj Party     B 
3   2000            17747   12.40   Congress                B
4   2000            14047   19.80   Independent             C
5   2000            17047   10.80   JLS                     C
6   2005            8358    15.80   Janvadi Party           A
7   2005            4428    13.10   Independent             A
8   2005            1647    1.20    Independent             B
9   2005            1610    11.10   Independent             B
10  2005            1334    15.06   Nationalist             C
11  2005            1834    18.06   NJM                     C
12  2010            21114   20.80   Independent             A
13  2010            1042    10.5    Bharatiya Janta Dal     A
14  2010            835     0.60    Independent             B
15  2010            14305   15.50   Independent             B
16  2010            22211   17.70   Congress                C
16  2010            20011   14.70   INC                     C

如何獲得 dataframe 包含的區域,其中前兩個政黨的“投票百分比”差異小於 10?

所需的 output:

Election Year    Region    Vote %
  2000             B        14.50
  2000             B        12.40
  2000             C        19.80
  2000             C        10.80
  2005             A        15.80
  2005             A        13.10
  2005             B        1.20
  2005             B        11.10
  2005             C        15.06
  2005             C        18.06
  2010             C        17.70
  2010             C        14.70

我嘗試按“選舉年”和“地區”進行分組。 然后根據“投票百分比”進行排序。 但我無法弄清楚如何讓所有地區的投票百分比差異小於 10。

任何建議都受到高度贊賞。

嘗試這個:

df[df.groupby(['Election Year', 'Region'])['Vote %'].diff().abs().bfill() < 10]

    Election Year  Votes  Vote %                          Party Region
2            2000  20886   14.50            Bahujan Samaj Party      B
3            2000  17747   12.40                       Congress      B
4            2000  14047   19.80                    Independent      C
5            2000  17047   10.80                            JLS      C
6            2005   8358   15.80             JanvadiParty Party      A
7            2005   4428   13.10                    Independent      A
8            2005   1647    1.20                    Independent      B
9            2005   1610   11.10                    Independent      B
10           2005   1334   15.06                    Nationalist      C
11           2005   1834   18.06                            NJM      C
16           2010  22211   17.70                       Congress      C
17           2010  20011   14.70                            INC      C

由於您已經只有 2 個最大的派對,您可以使用上面的代碼。 首先按年份和地區分組,然后獲得百分比票數的差異。 然后使用差值的絕對值來防止負數,然后回填所有條目,這樣每一行都有一個值。 然后與 10 進行比較。

我認為您可以在年份和地區列上使用DataFrame.groupby ,然后使用自定義 function 對結果進行調用agg對投票百分比進行排序並計算兩個最大值之間的差異

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM