Python 创建由符合条件的现有数据帧的特定行组成的新数据帧的最佳方法是什么?

Python 创建由符合条件的现有数据帧的特定行组成的新数据帧的最佳方法是什么?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框架,有6列和几行,每行都是来自实验中特定参与者的数据。每列都是参与者回答的特定量表,并包含他们的分数。我想创建一个新的数据框架,其中只包含来自某个特定度量的分数符合标准的参与者的数据 标准是它必须匹配我单独生成的列表中的一个项目 换言之,我把数据放在一个数据框中,我想把在6个指标中获得某个分数的参与者分离出来,这6个指标与感兴趣的分数列表相匹配。我希望在新的dataframe中包含所有6列,其中只包含感兴趣的参与者行。希望这是清楚的 我尝试使用groupby函数,但它在指定条件

我有一个熊猫数据框架,有6列和几行,每行都是来自实验中特定参与者的数据。每列都是参与者回答的特定量表,并包含他们的分数。我想创建一个新的数据框架,其中只包含来自某个特定度量的分数符合标准的参与者的数据

标准是它必须匹配我单独生成的列表中的一个项目

换言之,我把数据放在一个数据框中,我想把在6个指标中获得某个分数的参与者分离出来,这6个指标与感兴趣的分数列表相匹配。我希望在新的dataframe中包含所有6列,其中只包含感兴趣的参与者行。希望这是清楚的


我尝试使用groupby函数,但它在指定条件时没有提供足够的特殊性,或者至少我不知道是否存在此类方法的语法。我对熊猫相当陌生。

如果我正确理解了您的问题,您希望查询一个数据框,以便在列表中包含条目

比如,你有一个“结果”df

以及一系列积极的成果

 positive_outcomes = [1,5,7,3]
然后您可以查询类似的df

 df_final = df[df.score1.isin(positive_outcomes) | df.score2.isin(positive_outcomes)]
得到

   score1  score2
0       7       2
2       9       3
3       9       3
您可以使用和来隔离在测试中获得特定分数的参与者

下面是一个小示例数据框,显示了五名参与者在三项测试中的分数:

>>> 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
如果您想要一个参与者在三个测试中的任何一个测试中得分为
1
2
的数据帧,您可以执行以下操作:

>>> 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
值,创建一个布尔序列。然后,本系列用于索引数据帧
df

,以供将来参考:请发布演示您正在尝试执行的操作的代码。Alex,我厌倦了把我的代码放在这里,因为a)我不认为代码会有用,因为我只是在寻找一种实现特定功能的方法,我认为只要提到我使用的方法就足够了;b) 由于我的实验仍在分析中,我不想展示任何可能危及我数据保密性的东西。但我明白代码确实有助于获得上下文。所以,谢谢你的提示!
>>> 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