我想搜索一个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
后面的数字附加到其所有相应的鱼重对。
我认为这是我能做到的简化,所以感谢您的帮助。
答案 0 :(得分:1)
这应该这样做:
fish_frame[fish_frame[0].str.contains('Price')][1]