python - 如何在一行中的至少一个元素中选择包含特定值的行?

标签 python python-3.x pandas

我有一个 DataFrame DF 和一个列表,比如 List1List1 是从 DF 创建的,它具有 DF 中存在的元素但没有重复。我需要执行以下操作:
1.从List1中选择DF中包含特定元素的行(例如,遍历List1中的所有元素)
2. 将它们从 0 重新索引到任何行数,因为所选行可能具有非连续索引。

示例输入:

List1=['Apple','Orange','Banana','Pineapple','Pear','Tomato','Potato']
Sample DF
  EQ1      EQ2      EQ3
0 Apple    Orange   NaN
1 Banana   Potato   NaN
2 Pear     Tomato   Pineapple
3 Apple    Tomato   Pear
4 Tomato   Potato   Banana

现在,如果我想访问包含 Apple 的行,它们将是 0 和 3。但我希望将它们重命名为 0 和 1(重新索引)。搜索到Apple后,应该从List1中取出下一个元素,并执行类似的步骤。在此之后我还有其他操作要执行,因此我需要在 List1 中循环整个过程。我希望我已经很好地解释了它,这是我的代码,但它不起作用:

for eq in List1:
    MCS=DF.loc[MCS_Simp_green[:] ==eq] #Indentation was missing
    MCS= MCS.reset_index(drop=True)
    <Remaining operations>

最佳答案

我想你需要isinany :

List1=['Apple','Orange','Banana','Pineapple','Pear','Tomato','Potato']

for eq in List1:
    #print df.isin([eq]).any(1)
    #print df[df.isin([eq]).any(1)]
    df1 = df[df.isin([eq]).any(1)].reset_index(drop=True)  
    print df1

     EQ1     EQ2   EQ3
0  Apple  Orange   NaN
1  Apple  Tomato  Pear
     EQ1     EQ2  EQ3
0  Apple  Orange  NaN
      EQ1     EQ2     EQ3
0  Banana  Potato     NaN
1  Tomato  Potato  Banana
    EQ1     EQ2        EQ3
0  Pear  Tomato  Pineapple
     EQ1     EQ2        EQ3
0   Pear  Tomato  Pineapple
1  Apple  Tomato       Pear
      EQ1     EQ2        EQ3
0    Pear  Tomato  Pineapple
1   Apple  Tomato       Pear
2  Tomato  Potato     Banana
      EQ1     EQ2     EQ3
0  Banana  Potato     NaN
1  Tomato  Potato  Banana

要存储值,您可以使用 dict 理解:

dfs = {eq: df[df.isin([eq]).any(1)].reset_index(drop=True) for eq in List1}

print dfs['Apple']
     EQ1     EQ2   EQ3
0  Apple  Orange   NaN
1  Apple  Tomato  Pear

print dfs['Orange']
     EQ1     EQ2  EQ3
0  Apple  Orange  NaN

关于python - 如何在一行中的至少一个元素中选择包含特定值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230696/

相关文章:

python - 对象.filter ("ı wanna add two contains field")

python - 属性错误 : 'NoneType' object has no attribute 'excluded_of'

python - Pandas - 如何对多个变量进行分组和拆分?

python - 通过索引访问行号

python - 使用装饰器提供新的参数、kwargs

python - 使用递归函数打乱整数

python - 是否有必要传达(或预期)Python Socket TCP Buff 大小

Python 3.x 打印特定标题后的行数

python - 是否可以在 AWS Lambda 函数之间共享一段代码?

python - python类型转换AttributeError : 'str' object has no attribute 'astype'