我正在使用类似于以下的数据帧:
名称 | 公制1 | 米制2 | >国家
---|---|---|
John | 0.10 | 5.00 | 拿大//tr>
Jane | 0.50 | 拿大//tr> |
Jack | 2.00 | /td>加拿大 | //tr>
Polly | 0.30 | /td>加拿大 | //tr>
Mike | 拿大Steve | |
Lily | 0.15 | 1.20 | 拿大//tr>
Kate | 3.00 | /td>加拿大 | //tr>
Edward | 0.05 | 拿大//tr>Pete |
似乎有空字符串""
而不是数字。你可以试试:
def metricgreaterthanone(x):
n = pd.to_numeric(x, errors="coerce")
return (n > 1).sum() / n.notna().sum()
x = pd.pivot_table(
df,
index=["Country"],
values=["Name", "Metric 1", "Metric 2"],
aggfunc={
"Name": pd.Series.nunique,
"Metric 1": metricgreaterthanone,
"Metric 2": metricgreaterthanone,
},
)
print(x)
打印:
Metric 1 Metric 2 Name
Country
Canada 0.25 0.666667 10
x!=0
返回一个布尔数组,因此len()
不计算Trues的数量。
尝试
def metricgreaterthanone(x):
return (x>1).sum()/(x!=0).sum()