我有一个6列和几行的pandas数据框,每一行都是来自实验中特定参与者的数据。每列都是参与者回答的特定比例,并包含他们的分数。我想创建一个新的数据框,其中只包含那些参与者的数据,这些参与者的一项特定指标的得分与标准相符。
标准是它必须匹配我单独生成的列表中的一项。
简而言之,我将数据存储在一个数据框中,我想隔离那些在与感兴趣的得分列表匹配的6个度量之一中得分达到一定得分的参与者。我希望新数据框中的所有6列都只有感兴趣的参与者行。希望这很清楚。
我尝试使用groupby函数,但是在指定条件时它没有提供足够的特异性,或者至少我不知道这种方法是否存在语法。我是熊猫的新手。
您可以使用isin()
并any()
隔离在测试中获得特定分数的参与者。
这是一个小示例DataFrame,显示了三个测试中五个参与者的分数:
>>> df = pd.DataFrame(np.random.randint(1,6,(5,3)), columns=['Test1','Test2','Test3'])
>>> df
Test1 Test2 Test3
0 3 3 5
1 5 5 2
2 5 3 4
3 1 3 3
4 2 1 1
如果要使参与者的得分为a1
或2
在三个测试中的任何一个中得分的DataFrame ,都可以执行以下操作:
>>> score = [1, 2]
>>> df[df.isin(score).any(axis=1)]
Test1 Test2 Test3
1 5 5 2
3 1 3 3
4 2 1 1
这里df.isin(score)
创建一个布尔数据框,显示的每个值是否df
在列表中scores
。any(axis=1)
检查每一行至少一个True
值,创建一个布尔系列。然后使用该系列为DataFrame编制索引df
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句