使用Pandas str.contains逐行比较

时间:2016-08-25 20:34:05

标签: python pandas

我已经设置了以下非常简单的数据库来说明我正在尝试做的事情:

teams = pd.DataFrame({"spreads":['New England Patriots -7.0','Atlanta Falcons 2.5','New Orleans Saints -4.5']})
teams['home'] = ['New England Patriots','Carolina Panthers','New Orleans Saints']
teams['away'] = ['Miami Dolphins','Atlanta Falcons','Tampa Bay Buccaneers']

我基本上试图提取价差。起初我试图使用str.contains首先提取团队名称,从而分离出数值,但似乎我不能将其用作逐行分析的比较工具。如果有人有任何提示如何提取数值(我不认为我可以使用正则表达式,因为有些情况下没有' - '符号出现)或至少告诉我用什么方法来确定是否每一行列出的球队都是本垒打或客场球队,我将非常感激。

2 个答案:

答案 0 :(得分:2)

使用.str.extract

teams.spreads.str.extract(r'(-?\d+\.?\d*)', expand=False)

0    -7.0
1     2.5
2    -4.5
Name: spreads, dtype: object

票友

teams.spreads.str.extract(r'(?P<spread_val>-?\d+\.?\d*)', expand=True)

enter image description here

答案 1 :(得分:1)

试试这个Splitting Strings

teams['spreads_val'] = teams['spreads'].str.rsplit(" ").str.get(-1)

0    -7.0
1     2.5
2    -4.5
Name: spreads_vals, dtype: object