python - 为 .apply 编写函数来分析整个列?

标签 python pandas dataframe

我有一个数据框(它是使用pivot函数的产物,这就是它有c和a的原因):

c 367235    419895  992194
a
1999-02-06  Nan 9   Nan
2000-04-03  2   Nan Nan
1999-04-12  Nan Nan 4
1999-08-08  2   Nan Nan
1999-11-01  8   5   1
1999-12-08  Nan 3   Nan
1999-08-17  Nan Nan 10
1999-10-22  Nan 3   Nan
1999-03-23  Nan 4   Nan
2000-09-29  9   Nan Nan
1999-04-30  Nan Nan 1
2000-09-30  9   Nan Nan

我想在此数据框的底部添加一个新行。新行中的每个单元格都会评估其上方的列;如果该列包含数字 9、8 或 3,则该单元格的计算结果为“TRUE”。如果该列不包含这些数字,则单元格的计算结果为“FALSE”。最终,我的目标是使用 drop 函数删除带有“FALSE”单元格的列,创建如下数据集:

c 367235    419895
a
1999-02-06  Nan 9
2000-04-03  2   Nan
1999-04-12  Nan Nan
1999-08-08  2   Nan 
1999-11-01  8   5
1999-12-08  Nan 3
1999-08-17  Nan Nan
1999-10-22  Nan 3   
1999-03-23  Nan 4
2000-09-29  9   Nan
1999-04-30  Nan Nan
2000-09-30  9   Nan
           TRUE TRUE

我的问题:

我可以编写一个函数来评估多个数字之一是否在列表中,但我无法将此函数写入 .apply。

也就是说,我发现这可以用来确定一组数字是否在列表中:

How to check if one of the following items is in a list?

我尝试对 apply 函数进行如下修改:

def BIS(i):
        L1 = [9,8,3]
        if i in L1:
            return "TRUE"
    else:
        return "FALSE"
df_wanted.apply(BIS, axis = 0)

这会导致错误: ('Series 的真值不明确。使用 a.empty、a.bool()、a.item、a.any()。'u'出现在索引 367235 处')

这让我想到,虽然 .apply 将整个列作为输入,但它无法聚合所有单个单元格的真值并得出有关该列的总真值。我查了a.any和a.bool,它们看起来很有用,但我不知道把它们放在哪里?例如,这不起作用:

df_wanted.apply.any(BIS, axis = 0)

这也没有

df_wanted.apply(BIS.any, axis = 0).

有人能指出我正确的方向吗?非常感谢提前

最佳答案

您可以使用.isin()方法:

df.loc[:, df.isin(['9','8','3']).any()]

enter image description here

如果您需要将条件附加到数据框:

cond = df.isin(['9','8','3']).any().rename("cond")
df.append(cond).loc[:, cond]

enter image description here

关于python - 为 .apply 编写函数来分析整个列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41170675/

相关文章:

python - 检查 DataFrame 或 ndrray 是否包含数字

python - Eigen + MKL 或 OpenBLAS 比 Numpy/Scipy + OpenBLAS 慢

python - Pandas - 根据另一个单元格的先前值填充 NaN

R 将字符串评估为数据框

python - 解析反斜杠分隔的层次结构路径(不同的级别数)

python - 重命名数据帧中的索引子集

python - 创建并填充 PySpark 数据框,其中列作为 period_range

Python数据框列字符串提取有效的方法?

python - 将 Shapefile 读入 Dataframe

python - 如何从python输出一个数组以通过paraview显示