使用for循环选择Pandas Dataframe行,针对索引中不同的子字符串

2024-05-28 11:16:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带索引的数据帧:

               A         B         C         D
flowers blue  0.714550  0.208125 -0.216861  good
trucks red   -0.950056  1.779076  0.489394  average    
flowers red   0.249905  0.852931 -0.226787  bad
trucks blue   1.183972  1.120614  0.085162  good

现在我想用以下函数选择包含我要查找的子字符串的所有行:

^{pr2}$

如果我尝试:

select(df, ['flowers', 'trucks'])

它只返回第一次迭代的数据选择(flowers)。在

有什么想法吗?在


Tags: 数据函数字符串dfblueredselectbad
1条回答
网友
1楼 · 发布于 2024-05-28 11:16:40

在第一次迭代时返回函数本身,因此它永远不会到达“trucks”参数。在

你需要像

def select(df, substring):
    """Select by substring from Dataframe"""
    frames = []    
    for i in substring:
        frames.append(df[df.index.to_series().str.contains(i)])
    return pd.concat(frames)

尽管上面的函数可以以不同于数据帧中出现的顺序返回行。在

我会用像

^{pr2}$

在这里,我们传递多个由管道运算符分隔的子字符串参数,如flowers|trucks

相关问题 更多 >