亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在字符串在多列中的熊貓中過濾數據

在字符串在多列中的熊貓中過濾數據

江戶川亂折騰 2023-03-01 16:05:50
我有一個看起來像這樣的數據框:team_1  score_1 team_2  score_2AUS     2       SCO     1ENG     1       ARG     0JPN     0       ENG     2我可以使用以下命令從一個團隊中檢索所有數據: #list specifiying team of interestteam = ['ENG']#slice 數據框以僅顯示列“Team 1”或“Team 2”值在指定字符串列表“team”中的行df.loc[df['team_1'].isin(team) | df['team_2'].isin(team)]team_1  score_1 team_2  score_2ENG     1       ARG     0JPN     0       ENG     2我現在如何才能只返回我的“團隊”的分數,例如:team    scoreENG     1ENG     2也許為每個團隊創建一個索引以便過濾掉?也許對 team_1 和 team_2 列進行編碼以過濾掉?
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

new_df_1 = df[df.team_1 =='ENG'][['team_1', 'score_1']]

new_df_1 =new_df_1.rename(columns={"team_1":"team", "score_1":"score"})

#   team  score

#  0  ENG      1


new_df_2 = df[df.team_2 =='ENG'][['team_2', 'score_2']]

new_df_2 = new_df_2.rename(columns={"team_2":"team", "score_2":"score"})

#  team  score

# 1  ENG      2


然后連接兩個數據框:


pd.concat([new_df_1, new_df_2])

輸出是:


 team  score

0  ENG      1

1  ENG      2


查看完整回答
反對 回復 2023-03-01
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

合并列,過濾團隊中的值,計算分數列的總和,并僅過濾團隊和分數:


 team = ["ENG"]


(

    df

    .melt(cols, value_name="team")

    .query("team in @team")

    .assign(score=lambda x: x.filter(like="score").sum(axis=1))

    .loc[:, ["team", "score"]]

)


    team    score

1   ENG        1

5   ENG        2


查看完整回答
反對 回復 2023-03-01
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號