使用行上的部分字符串匹配返回DataFrame项pandas python [重复]

Posted

技术标签:

【中文标题】使用行上的部分字符串匹配返回DataFrame项pandas python [重复]【英文标题】:Return DataFrame item using partial string match on rows pandas python [duplicate] 【发布时间】:2014-05-15 18:33:19 【问题描述】:

我有一个两列的数据框,一列是字符串,另一列是列表,如下所示:

      RSD_TYPE                                FILTER LIST
   0     AQ500          [N/A, Z mean, SNR mean, Dir mean]
   1    Triton  [wipe mean, Z mean, Avail mean, Dir mean]
   2  Windcube            [N/A, W mean, Q mean, Dir mean]
   3    Zephir     [Rain mean, W mean, Packets, dir mean]

我想根据与列 RSD_TYPE 的元素的部分字符串匹配返回一个列表。例如。搜索哪一行与“AQ5”有部分字符串匹配,然后从该行返回对应的列表项,在本例中为 [N/A, Z mean, SNR mean, Dir mean]。

计划是使用 .get_value 来执行此操作,但首先我需要有一种使用部分字符串匹配返回(行)索引的方法。这就是我卡住的地方。我知道如何在列标题上运行部分字符串匹配,但我找不到在该列中的元素(或整个数据框)上运行它的方法。有什么想法吗?

非常感谢。

【问题讨论】:

也推荐看看this answer。 【参考方案1】:

试试这个:

df[df['RSD_TYPE'].str.contains("AQ5")]['FILTER LIST']

例子:

In [3]: df
Out[3]:
   RSD_TYPE                                FILTER LIST
0     AQ500          [N/A, Z mean, SNR mean, Dir mean]
1    Triton  [wipe mean, Z mean, Avail mean, Dir mean]
2  Windcube            [N/A, W mean, Q mean, Dir mean]
3    Zephir     [Rain mean, W mean, Packets, dir mean]

[4 rows x 2 columns]

In [4]: df[df['RSD_TYPE'].str.contains("AQ5")]
Out[4]:
  RSD_TYPE                        FILTER LIST
0    AQ500  [N/A, Z mean, SNR mean, Dir mean]

[1 rows x 2 columns]

In [5]: df[df['RSD_TYPE'].str.contains("AQ5")]['FILTER LIST']
Out[5]:
0    [N/A, Z mean, SNR mean, Dir mean]
Name: FILTER LIST, dtype: object

【讨论】:

太棒了!非常感谢。

以上是关于使用行上的部分字符串匹配返回DataFrame项pandas python [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从正则表达式仅返回部分匹配项

命令行上的 Maven 依赖项更新

str.contains 找不到部分匹配项

正则表达式:如何访问一个组的多个匹配项? [复制]

Pandas:在 500 万行上使用 Apply 和正则表达式字符串匹配

如何突出显示和检测 CSS 网格行上的鼠标点击?