gpt4 book ai didi

python - Pandas:多索引子集选择

转载 作者:行者123 更新时间:2023-12-01 22:04:58 24 4
gpt4 key购买 nike

以下代码将生成一个代表四个玩家的数据帧,每个玩家多次掷两个骰子:

mux = pd.MultiIndex.from_arrays([
list(['Alice', 'Alice', 'Alice',
'Bob', 'Bob', 'Bob', 'Bob', 'Bob',
'Carol', 'Carol', 'Carol', 'Carol', 'Carol', 'Carol',
'Dan', 'Dan']),
list('1231234512345612')
], names=['player', 'roll'])

#df = pd.DataFrame({'die1': np.random.randint(1, 7, len(mux)),
# 'die2': np.random.randint(1, 7, len(mux))}, mux)

df = pd.DataFrame({'die1': ['3','6','2','1','1','6','5','1','3','1','4','5','3','5','5','5'],
'die2': ['2','5','1','4','1','6','3','5','6','4','5','1','4','4','3','6']}, mux)

这是生成的数据框:

            die1 die2
player roll
Alice 1 3 2
2 6 5
3 2 1
Bob 1 1 4
2 1 1
3 6 6
4 5 3
5 1 5
Carol 1 3 6
2 1 4
3 4 5
4 5 1
5 3 4
6 5 4
Dan 1 5 3
2 5 6

我对玩家感兴趣——不仅仅是个人掷骰,而是在第一个骰子上掷出 6 的玩家。

以下代码执行了我不想要的操作,它返回第一个骰子为 6 的各个骰子:df[df.die1=='6']:

             die1   die2
player roll
Alice 2 6 5
Bob 3 6 6

如何使用 die1 生成以下内容,而不提及各个玩家的姓名(我显然不会事先知道这些姓名)?

            die1 die2
player roll
Alice 1 3 2
2 6 5
3 2 1
Bob 1 1 4
2 1 1
3 6 6
4 5 3
5 1 5

最佳答案

您可以执行groupby:

# is your data string '6' or integer 6
df[df['die1'].eq('6').groupby('player').transform('any')]

输出:

            die1 die2
player roll
Alice 1 3 2
2 6 5
3 2 1
Bob 1 1 4
2 1 1
3 6 6
4 5 3
5 1 5

关于python - Pandas:多索引子集选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61883022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com