gpt4 book ai didi

python - 根据 Pandas 多列中的值从数据框中选择行

转载 作者:太空狗 更新时间:2023-10-29 20:37:53 24 4
gpt4 key购买 nike

这个问题非常another相关,我什至会使用这个问题上非常有用的公认解决方案中的示例。这是已接受解决方案的示例(归功于 unutbu):

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
# A B C D
# 0 foo one 0 0
# 1 bar one 1 2
# 2 foo two 2 4
# 3 bar three 3 6
# 4 foo two 4 8
# 5 bar two 5 10
# 6 foo one 6 12
# 7 foo three 7 14

print(df.loc[df['A'] == 'foo'])

产量

     A      B  C   D
0 foo one 0 0
2 foo two 2 4
4 foo two 4 8
6 foo one 6 12
7 foo three 7 14

但是,如果我想找出同时包含“foo”和“one”的所有行怎么办?这是第 0 行和第 6 行。我的尝试是尝试

print(df.loc[df['A'] == 'foo' and df['B'] == 'one'])

不幸的是,这不起作用。任何人都可以建议一种方法来实现这样的事情吗?理想情况下,它足够通用,其中可能有一组更复杂的条件,涉及 andor,尽管我实际上不需要它来实现我的目的。

最佳答案

您的代码只需要很小的更改:将 更改为 &(并添加括号以正确排序比较):

In [104]: df.loc[(df['A'] == 'foo') & (df['B'] == 'one')]
Out[104]:
A B C D
0 foo one 0 0
6 foo one 6 12

您必须使用 & 的原因是这将对数组进行逐元素比较,而 期望比较两个计算结果为 True 或 False 的表达式.
同样,当你想要比较时,你可以在这种情况下使用|

关于python - 根据 Pandas 多列中的值从数据框中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756340/

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