小能豆

从 pandas.DataFrame 中使用复杂标准进行选择

javascript

例如我有简单的 DF:

import pandas as pd
from random import randint

df = pd.DataFrame({'A': [randint(1, 9) for x in range(10)],
                   'B': [randint(1, 9)*10 for x in range(10)],
                   'C': [randint(1, 9)*100 for x in range(10)]})

我可以使用 Pandas 的方法和习语从“A”中选择出与“B”对应的值大于 50,与“C”对应的值不等于 900 吗?


阅读 38

收藏
2024-07-02

共1个答案

小能豆

是的,您可以从 DataFrame 中的“A”列中选择值,df这些值在“B”列中的对应值大于 50,而在“C”列中的值不等于 900。您可以使用 Pandasloc方法来实现这一点。以下是操作方法:

import pandas as pd
from random import randint

# Create the DataFrame
df = pd.DataFrame({'A': [randint(1, 9) for x in range(10)],
                   'B': [randint(1, 9) * 10 for x in range(10)],
                   'C': [randint(1, 9) * 100 for x in range(10)]})

# Select values from 'A' where 'B' > 50 and 'C' != 900
result = df.loc[(df['B'] > 50) & (df['C'] != 900), 'A']

print(result)

在此代码中:

  • df['B'] > 50创建一个布尔系列,其中True“B”列中的值大于 50。
  • df['C'] != 900创建一个布尔系列,其中True“C”列中的值不等于 900。
  • 将这两个条件与&运算符结合起来,就会得到一个True满足两个条件的布尔系列。
  • df.loc[conditions, 'A']选择满足组合条件的“A”列中的值True

以下是示例输出:

0    2
1    3
3    5
7    8
Name: A, dtype: int64

输出将显示满足“B”列和“C”列条件的行的“A”列值。请注意,实际输出将取决于 DataFrame 中随机生成的值。

2024-07-02