Pandas - 在DataFrame单元格中搜索字符串

时间:2017-06-30 19:08:26

标签: python pandas dataframe

我想搜索一个DataFrame,就像我搜索一个txt文件一样:我想通过它扫描并查找单词的出现,如果出现该单词,我想要捕获它后面的数字。

以下是fish_frame

fish_frame:                   0           1           2  ASK            TRADE_DATE
0          Species       Price      Weight    1  2013-06-21 14:07:00   
1          GBW Cod         .55       8,059    1  2013-06-21 14:07:00   
2      GBE Haddock         .03      14,628    1  2013-06-21 14:07:00   
3      GBW Haddock         .02      87,451    1  2013-06-21 14:07:00   
4            GB YT        1.50       1,818    1  2013-06-21 14:07:00   
5            Witch        1.25       1,414    1  2013-06-21 14:07:00   
6        GB Winter         .40      23,757    1  2013-06-21 14:07:00   
7          Redfish         .02         123    1  2013-06-21 14:07:00   
8       White Hake         .40         934    1  2013-06-21 14:07:00   
9          Pollock         .02       7,900    1  2013-06-21 14:07:00   
10  Package Price:         NaN  $21,151.67    1  2013-06-21 14:07:00   
11         Species      Weight        None    1  2013-06-21 14:07:00   
12         GBE Cod         820        None    1  2013-06-21 14:07:00   
13         GBW Cod      15,279        None    1  2013-06-21 14:07:00   
14     GBE Haddock      32,250        None    1  2013-06-21 14:07:00   
15     GBW Haddock     192,793        None    1  2013-06-21 14:07:00   
16           GB YT       6,239        None    1  2013-06-21 14:07:00   
17          SNE YT       2,018        None    1  2013-06-21 14:07:00   
18          GOM YT       1,511        None    1  2013-06-21 14:07:00   
19          Plaice       2,944        None    1  2013-06-21 14:07:00   
20           Witch       1,100        None    1  2013-06-21 14:07:00   
21       GB Winter     158,608        None    1  2013-06-21 14:07:00   
22      White Hake          31        None    1  2013-06-21 14:07:00   
23         Pollock       1,983        None    1  2013-06-21 14:07:00   
24      SNE Winter       7,257        None    1  2013-06-21 14:07:00   
25           Price  $58,500.00        None    1  2013-06-21 14:07:00

因此,对于我的DataFrame,我想查找单词Price的任何出现,如果出现,则捕获其后面的数字。与第10行和25一样。

我尝试过简单的命令,例如if 'Price' in row: do this,但这些命令不起作用,因为DataFrame显然不是txt文件。所以我尝试了尝试:

for row in fish_frame.iterrows():
    fish_frame.str.split('Price')
    print("fish_frame_split:", fish_frame)

直接从Pandas网站(https://pandas.pydata.org/pandas-docs/stable/text.html)阅读此代码片段后:。

In [15]: s2 = pd.Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h'])

In [16]: s2.str.split('_')
Out[16]: 
0    [a, b, c]
1    [c, d, e]
2          NaN
3    [f, g, h]
dtype: object

但导致错误:AttributeError: 'DataFrame' object has no attribute 'str'

总而言之,我很困惑为什么该命令对我失败,如何匹配我的DataFrame中的单词Price,然后如何将Price后面的数字附加到其所有相应的鱼重对。

我认为这是我能做到的简化,所以感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这应该这样做:

fish_frame[fish_frame[0].str.contains('Price')][1]