python - 删除包含值的行,Pandas DataFrame
问题描述
我的数据框为:
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| | Unnamed: 0 | home_odds | draw_odds | away_odds | country | league | home_team | away_team | home_score | away_score | datetime |
+====+==============+=============+=============+=============+===========+================+==================+====================+==============+==============+==================+
| 0 | 412701 | 167/50 | 329/100 | 63/100 | Â Iceland | League Cup | Kopavogur | Vikingur Reykjavik | 0 | 1 | 16/02/2016 19:15 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 1 | 412702 | 463/100 | 173/50 | 47/100 | Â Iceland | League Cup | Fram | Stjarnan | 0 | 3 | 14/02/2016 21:15 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 2 | 412708 | 51/25 | 263/100 | 109/100 | Â Iceland | League Cup | Keflavik | Vestmannaeyjar | 1 | 0 | 14/02/2016 15:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 3 | 412710 | 101/100 | 13-May | 219/100 | Â Iceland | League Cup | Breidablik | Fylkir | 1 | 3 | 13/02/2016 12:15 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 4 | 412711 | 51/25 | 287/100 | 51/50 | Â Iceland | League Cup | Throttur | Leiknir | 0 | 1 | 12/02/2016 22:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 5 | 412712 | 112/25 | 373/100 | 23/50 | Â Iceland | League Cup | Fjolnir | Hafnarfjordur | 0 | 4 | 12/02/2016 20:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 6 | 412715 | 74/25 | 247/100 | 83/100 | Â Hungary | OTP Bank Liga | Ferencvaros | MOL Fehervar | 0 | 1 | 2/10/2011 17:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 7 | 412717 | 93/100 | 58/25 | 269/100 | Â Hungary | OTP Bank Liga | Haladas | Siofok | 2 | 1 | 1/10/2011 16:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 8 | 412718 | 83/100 | 5-Feb | 59/20 | Â Hungary | OTP Bank Liga | Pecsi MFC | Kaposvar | 1 | 1 | 1/10/2011 16:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 9 | 9 | 4.66 | 3.74 | 1.59 | Â Albania | First Division | Dinamo Tirana | Beselidhja Lezha | 2 | 0 | 22/02/2020 14:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 10 | 10 | 1.82 | 3 | 4.42 | Â Albania | First Division | Beselidhja Lezha | Burreli | 2 | 1 | 16/02/2020 14:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 11 | 11 | 1.41 | 4.2 | 5.85 | Â Albania | First Division | Terbuni | Koplik | 2 | 1 | 8/02/2020 14:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 12 | 15 | 2.51 | 2.98 | 2.64 | Â Albania | First Division | Dinamo Tirana | Egnatia Rrogozhine | 0 | 0 | 26/01/2020 13:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
| 13 | 16 | 2.36 | 3.2 | 2.66 | Â Albania | First Division | Elbasani | Oriku | 2 | 0 | 25/01/2020 13:00 |
+----+--------------+-------------+-------------+-------------+-----------+----------------+------------------+--------------------+--------------+--------------+------------------+
要过滤 home_odds、draw_odds 和 away_odds 不包含“/”的行,我使用的是此处发布的解决方案
df = df[df.home_odds != "/"]
df = df[df.draw_odds != "/"]
df = df[df.away_odds != "/"]
但是它不起作用。
如何删除包含的行/
?
解决方案
尝试通过str.contains()
:
m=df[['home_odds', 'draw_odds', 'away_odds']].agg(lambda x:x.str.contains('/'),1).all(1)
#you can also use apply() in place of agg() method
或者
另一种选择str.count()
:
m=df[['home_odds', 'draw_odds', 'away_odds']].agg(lambda x:x.str.count('/'),1).ne(0).all(1)
最后:
df[~m]
#OR
df.loc[~m]
或者
您也可以通过 3 个步骤执行此操作:
df = df.loc[~df['home_odds'].str.contains('/')]
df = df.loc[~df['draw_odds'].str.contains('/')]
df = df.loc[~df['away_odds'].str.contains('/')]
推荐阅读
- sql - IBatis2动态更新查询执行
- rust - 如何仅向其兄弟姐妹和父级公开方法,但不向使用 rust 中的箱子的客户公开
- pytorch - 堆叠/连接张量会增加内存使用量
- javascript - Mongoose 通过包含子数组的参数查找
- python - 如何在 Python 中将 JSON 对象元素分成单独的数组?
- swiftui - 如何在天或小时或秒 swiftUI 中转换用户编号
- numpy - 在 NumPy 数组的每一列中找到两个最小值的最快方法
- image - firestore 图像未加载到个人资料页面
- c - 我必须从这个 if 语句中理解什么
- r - 使用 r 将 Windows 时间转换为可读格式?