【发布时间】:2021-10-08 02:50:09
【问题描述】:
我正在尝试为每个 groupby 子集打印每列中非空值的百分比。 groupby 在“代理”列上执行。你能帮我解决这个问题吗?我尝试过这样的事情:
[代码]
df.groupby('Agent').apply(lambda x: x.notnull().sum()/len(x)*100)
【问题讨论】:
标签: python pandas dataframe numpy notnull
我正在尝试为每个 groupby 子集打印每列中非空值的百分比。 groupby 在“代理”列上执行。你能帮我解决这个问题吗?我尝试过这样的事情:
[代码]
df.groupby('Agent').apply(lambda x: x.notnull().sum()/len(x)*100)
【问题讨论】:
标签: python pandas dataframe numpy notnull
获取非空值百分比的最快方法可能是将数据列转换为 True 或 False,然后进行 groupby 均值操作。二元列的均值运算隐式计算为真值的百分比,因为它将真视为 1,假视为 0。
agents = ['A','A','A','B','B','C','C','C','C', 'D']
data = pd.DataFrame(data={
'Agent': agents,
'x': range(len(agents)),
'y': range(len(agents))
})
data.loc[[0, 4, 5], 'x'] = np.nan
data.loc[[1, 3, 9], 'y'] = np.nan
# Percentage non-missing grouped by Agent
100*(1-data.set_index('Agent').isnull().groupby(level='Agent').mean())
【讨论】: