gpt4 book ai didi

python - 如何使用多行条件从 Pandas 数据框中选择列

转载 作者:行者123 更新时间:2023-12-05 01:23:44 25 4
gpt4 key购买 nike

我有一个包含许多列和三行的数据框。我想根据不同行的条件过滤列

例如在下面的示例中,我想获取行 'AAA' 的值为 < -1 以及行 'BBBB' 和 'CCCC' 的值为 > -1

的所有列
import pandas as pd

data = {"Name": ["AAAA", "BBBB", "CCCC"],
"C1": [-2, -0.5, -0.5],
"C2": [-2, -0.5, -0.5],
"C3": [-0.5, -2, -2]}

df = pd.DataFrame(data)
df.set_index("Name")
         C1      C2      C3
Name
AAAA -2.0 -2.0 -0.5
BBBB -0.5 -0.5 -2.0
CCCC -0.5 -0.5 -2.0

我想我需要使用 loc 但我不知道在这种情况下该怎么做。

理想情况下,我的输出是:

         C1      C2     
Name
AAAA -2.0 -2.0
BBBB -0.5 -0.5
CCCC -0.5 -0.5

最佳答案

通常这种操作是按行执行的,因此如果您的数据集允许,我会转置行/列。

此外,要将 'Name' 列设置为索引,您需要使用 'inplace' 选项或设置 df = df.set_index("Name")。

这是获得您想要的结果的一种方法,我已将其分解为每个逻辑步骤,以便您可以根据需要使用尽可能多的标准进行扩展。

df = df.set_index("Name")

# create a mask of columns based on criteria
mask1 = df.loc['AAAA'] < -1

mask2 = df.loc['BBBB'] > -1

mask3 = df.loc['CCCC'] > -1

# combine to single mask
mask = mask1*mask2*mask3

# set dataframe to only required columns
df_out = df.loc[:, mask]

# alternative one liner but less clear

df_out2 = df.loc[:, (df.loc['AAAA'] < -1) &
(df.loc['BBBB'] > -1) &
(df.loc['CCCC'] > -1)]

关于python - 如何使用多行条件从 Pandas 数据框中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71922497/

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