【问题标题】:Print all rows whose 2 columns are the same打印 2 列相同的所有行
【发布时间】:2019-08-31 14:48:45
【问题描述】:

我已经下载了一个关于国际足球比赛结果的数据集,但在可视化一件事时遇到了问题。列名如下:

日期

主队

客队

home_score

away_score

比赛

城市(比赛发生的地方)

国家(比赛发生地)

中立(如果比赛发生在主队国家之外,则为 TRUE,否则为 FALSE。)

我试图找出得分与比赛发生时间之间的相关性。为此,我想打印(然后计算)所有行,其中:

  • home_team == city 和 home_score > away_score
  • away_team == city 和 away_score > home_score

另外,如果你们知道如何在不创建两个单独条件的情况下将其结合起来,那也很高兴知道!

如果有人有兴趣,可以在这里获得数据集:https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017

我尝试了以下方法,但没有成功

for row in df:
    if df['home_team'] == df['city'] and home_score > away_score:
        print (row)

这是我的代码:

df = pd.read_csv('results.csv')

由于某种原因,True/False 是布尔值,所以我将其更改为 str

booleandf = df.select_dtypes(include=[bool])
df_str = {True: 'TRUE', False: 'FALSE'}

for column in booleandf:
    df['neutral'] = df['neutral'].map(df_str)

打印所有中性 == 'FALSE 的行

df[df['neutral'].str.contains("FALSE")]

遇到错误:解析时出现意外 EOF

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    IIUC 这应该会为您提供您想要可视化的行。试试看

    df.loc[(df['neutral']=="FALSE") & (df['home_score'] > df['away_score'])]
    

    【讨论】:

      【解决方案2】:

      比较 home_team 和 city 是行不通的,因为一个是国家,另一个是国内的城市。您是否正在尝试解决计算主客场比赛的全球比分的问题?

      【讨论】:

        【解决方案3】:

        你想多了。通常,如果您在 pandas 数据帧上使用 python 循环,那么您做错了。在这种情况下,您可以像这样获得所需的计数:

        home_team_win_count = len(df[(df.home_team == df.country) & (df.home_score > df.away_score)])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-22
          • 1970-01-01
          • 1970-01-01
          • 2015-10-14
          • 1970-01-01
          • 2018-07-21
          • 1970-01-01
          • 2015-10-18
          相关资源
          最近更新 更多