【问题标题】:iterate rows and print based on condition pandas python根据条件 pandas python 迭代行和打印
【发布时间】:2015-11-07 02:07:00
【问题描述】:

我有一个使用 pd.read_excel 读取的数据集

Block     Con     
  1       100      
  1       100      
  1       100      
  1       33      
  1       33       
  1       33
  2       100
  2       100
  2       100
  2       33
  2       33
  2       33
...

一共有10个'block',每个'block'有2种'con':100和33。 我如何遍历“块”列,以便为每个“块”打印出 2 种类型的“con”:100 和 33

希望输出:

      1      100
              33
      2       100
              33

我的代码:

for b in data.Block:
     for c in data.Con:
         print(c)

但它会打印出每一行块的所有 con。

【问题讨论】:

    标签: python pandas iteration row


    【解决方案1】:

    使用 drop_duplicates:

    In [11]: df
    Out[11]:
        Block  Con
    0       1  100
    1       1  100
    2       1  100
    3       1   33
    4       1   33
    5       1   33
    6       2  100
    7       2  100
    8       2  100
    9       2   33
    10      2   33
    11      2   33
    
    In [12]: df.drop_duplicates()
    Out[12]:
       Block  Con
    0      1  100
    3      1   33
    6      2  100
    9      2   33
    

    【讨论】:

    • 谢谢,这很有道理。但我的实际表比这复杂得多,这就是为什么我想知道如何通过某些条件迭代行。请看我编辑的帖子。
    • @Jessica 您应该将此作为另一个问题提出,而不是编辑旧问题来更改它。这样,如果其他人用谷歌搜索你的问题/答案,他们就会发现这个:)
    • 请在此处查看我的新帖子:stackoverflow.com/questions/33573329/…
    【解决方案2】:

    我会以这种方式使用groupby

    d = df.groupby(['Block','Con']).size()
    

    返回:

    Block  Con
    1      33     3
           100    3
    2      33     3
           100    3
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2021-01-20
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2021-05-07
    • 2014-08-14
    相关资源
    最近更新 更多