gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:09 25 4
gpt4 key购买 nike

我有一个 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/

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