gpt4 book ai didi

python - Pandas Dataframe 列平均值的 bool 运算 - 这必须很简单

转载 作者:行者123 更新时间:2023-12-01 00:06:48 29 4
gpt4 key购买 nike

我有 pandas 数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[1,5,3],
'B': [4,2,6]})

df['avg'] = df.mean(axis=1)
df[df<df['avg']]

我想保留数据框中低于 df['avg'] 列平均值的所有值。当我执行以下操作时,我将返回所有 NAN

df[df<df['avg']]

如果我设置一个 for 循环,我可以获得我想要的 bool 值。

col_names = ['A', 'B']
for colname in col_names:
df[colname] = df[colname]<df['avg']

我正在搜索的内容如下所示:

df_desired = pd.DataFrame({
'A':[1,np.nan,3],
'B':[np.nan,2,np.nan],
'avg' :[2.5, 3.5, 4.5]
})

我该怎么做?必须有一种Python式的方法来做到这一点。

最佳答案

您可以使用.mask(..) [pandas-doc]这里。我们可以使用 numpy 的广播来生成高于给定平均值的 bool 值数组:

>>> df.mask(df.values > df['avg'].values[:,None])
A B avg
0 1.0 NaN 2.5
1 NaN 2.0 3.5
2 3.0 NaN 4.5

关于python - Pandas Dataframe 列平均值的 bool 运算 - 这必须很简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59922358/

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