【发布时间】:2020-05-12 07:27:14
【问题描述】:
我有 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 循环,我可以得到我想要的布尔值。
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]
})
我该怎么做?必须有一个 Pythonic 的方式来做到这一点。
【问题讨论】: