使用部分字符串匹配返回pandas DataFrame行项目

4 投票
1 回答
6862 浏览
提问于 2025-04-18 01:13

我有一个数据表,里面有两列,一列是字符串,另一列是列表,像这样:

      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]

我想根据部分字符串匹配来返回一个列表,比如说,我想找出哪一行的字符串部分匹配“ AQ5”,然后返回那一行对应的列表项,在这个例子中就是 [N/A, Z mean, SNR mean, Dir mean]。

我原本打算用 .get_value 来实现这个,但首先我需要找到一种方法,通过部分字符串匹配来返回(行)索引。这就是我现在遇到的问题。我知道怎么在列标题上进行部分字符串匹配,但找不到在那一列的元素(或者整个数据表)上进行匹配的方法。有没有什么想法?

非常感谢!

1 个回答

7

试试这个:

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

撰写回答