gpt4 book ai didi

python - 根据值 Pandas Dataframe 获取所有其他列

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

假设我有以下 df:

>  Name   A     B     C     D   
John Nan 1 2 Nan
Mike 2 Nan Nan Nan
Fred Nan 5 6 7
Ana 3 Nan 3 2
Fran 2 Nan 1 1

我想做的是对一些列进行排序,这样,我对只填充了 A 列的每个人(在本例中为 Mike)进行排序:

> df_1 = df[(df['A'] > 0)&(~(df['A'] == 0))]

或者我只想填充两列(在本例中,没有):

df_1 = df[(df['A','B'] > 0)&(~(df['A','B'] == 0))]

我真的很挣扎。

谢谢

最佳答案

isnull + 全部

您的语法不正确。您可以使用pd.DataFrame.isnull :

mask1 = df['A'] > 0
mask2 = df[['B', 'C', 'D']].isnull().all(1)

df_1 = df_1[mask1 & mask2]

同样,对于第二个查询:

mask1 = (df[['A', 'B']] > 0).all(1)
mask2 = df[['C', 'D']].isnull().all(1)

df_1 = df_1[mask1 & mask2]

这假设您希望显式过滤 mask1 中大于 0 的值。如果任何非空数字就足够了,您可以使用 pd.DataFrame.notnull .

不要害怕以这种方式将蒙版分成多行。它将使您的代码更清晰、更易于管理。

管道 + isnull + 全部

更一般地说,您可以编写一个函数来计算和应用 bool 系列掩码:

def masker(df, cols_required):

""" Supply list cols_required. These must be > 0; others null. """

mask1 = (df[cols_required] > 0).all(1)
mask2 = df[df.columns.difference(cols_required)].isnull().all(1)
return df[mask1 & mask2]

df = df.pipe(masker, cols_required=['A', 'B'])

关于python - 根据值 Pandas Dataframe 获取所有其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50762963/

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