pandas 打印2列相同的所有行

9rbhqvlz  于 2023-08-01  发布在  其他
关注(0)|答案(4)|浏览(108)

我下载了一个关于国际足球比赛结果的数据集,我在可视化一件事上遇到了问题。列名称如下:
日期
主队
客场队
主场得分
客场得分
锦标赛
城市(比赛发生地)
国家(比赛发生地)
中立(如果比赛发生在主队国家以外,则为TRUE,否则为FALSE。)
我想找出比分和比赛时间之间的关系。为此,我想打印出(然后计数)所有行,其中:

  • home_team == city and home_score > away_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是bool值,因此我将其更改为str

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

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


打印neutral == 'FALSE的所有行

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


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

vfh0ocws

vfh0ocws1#

IIUC这应该会让你看到你想要的行。试试看

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

字符串

y0u0uwnf

y0u0uwnf2#

home_teamcity进行比较是行不通的,因为一个是国家,另一个是国家中的城市。您是否正在尝试解决计算主客场比赛总比分的问题?

lnvxswe2

lnvxswe23#

你想太多了一般来说,如果你在pandas Dataframe 上使用python循环,你就做错了。在这种情况下,你可以像这样得到你要找的计数:

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

字符串

xzlaal3s

xzlaal3s4#

根据所提供的信息,以下是您的代码。

df = pd.read_csv('results.csv')
home_team_win_count = df[(df['neutral']) & (((df['city'] == df['home_team']) & (df['home_score'] > df['away_score'])) | ((df['city'] == df['away_team']) & (df['home_score'] < df['away_score'])))]

字符串
根据您的详细信息,您的要求是df['neutral']是一个布尔列,正如您所说,您只需要True。如果city等于home_team,则home_team的得分高于away_team,如果city等于away_team,则away_team的得分更高。

相关问题