根据其他数据框中的值删除数据框行

时间:2018-11-21 17:42:35

标签: python pandas

我正在研究Kaggle(https://www.kaggle.com/manasgarg/ipl)的IPL数据集。它有两个带有主键的.csv文件,用于连接数据。 我想丢掉击球队输掉比赛的地方。 df_deliv拥有打击队 df_match有比赛的获胜者

我使用下面的代码实现了它,但是由于for循环,它非常慢。

import pandas as pd
import numpy as np

df_deliv = pd.read_csv("deliveries.csv")
df_match = pd.read_csv("matches.csv")
df_deliv = df_deliv[["match_id", "batting_team", "batsman", "batsman_runs"]]
df_deliv["winner"] = [df_match.loc[i-1]["winner"] for i in df_deliv["match_id"]] #makes it very slow
df_deliv.drop(df_deliv[df_deliv["batting_team"] != df_deliv["winner"]].index, inplace = True)
print(df_deliv)

有一种方法可以在一个df.drop语句中执行,而不是在for循环中执行?

1 个答案:

答案 0 :(得分:0)

除了删除,您还可以过滤所需的行。像这样:

df_deliv = df_deliv[df_deliv['batting_team']==df_deliv['winner']]