gpt4 book ai didi

python - Pandas : how to select index/row label in dataframe that matches a condition

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:32 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框

        fail    success
aa 1 0
ab 1 0
aback 0 1
abandon 3 1
abate 0 1
abc 1 0

其中“fail”和“success”是列的名称,“aa”、“ab”、“aback”等是行的标签。该表包含一个词(“ab”、“aback”等)在一组文本(2 组:“fail”和“success”)中出现的次数。

有没有办法根据单词在其中一个组中是否是唯一的,将每行标签与列名称相关联?

输出应该是这样的:

{'fail' : [("aa",1),("ab",1),("abc",1)], 'success' : [("aback",1),("abate",1)]}

谢谢!

最佳答案

你可以用 dict 理解来做到这一点:

{col: list(df.loc[(df[col] > 0) & (df.drop(columns=col) == 0).all(axis=1), col].iteritems())
for col in df.columns}

输出:

{'fail': [('aa', 1), ('ab', 1), ('abc', 1)],
'success': [('aback', 1), ('abate', 1)]}

即使您有两列以上,这也能正常工作。实际上,它所做的是,对于每一列,获取满足以下两个条件的索引值对:

  1. 该列中该索引的值大于 0
  2. 该列中所有其他索引的值为 0

如果您假设没有所有值都非零的行,那么您可以删除第一个条件,它给出了这个:

{col: list(df.loc[(df.drop(columns=col) == 0).all(axis=1), col].iteritems())
for col in df.columns}

关于python - Pandas : how to select index/row label in dataframe that matches a condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com