我正在尝试为所有数据帧计算每个后续2行组的平均值。我想我通过以下代码得到了这一点:
df.groupby(np.arange(len(df))//2).mean()
但是,问题在于并非所有值都是数字。在这种情况下,如果组的第二行是数字,而第一行不是数字,则不是平均值,而是与第二行相同。如果两行都不是数字,则应将值分配为0。
为了获得更好的可视化效果,我有以下数据框:
Well Ct
0 A1 Undetermined
1 A2 Undertermined
2 A3 Undetermined
3 A4 41.2
4 B1 42
5 B2 43
我想要获得的是:
Well Ct
0 A1-A2 0.0
1 A3-A4 41.2
2 B1/B2 42.5
有什么办法可以解决这个问题或已经发布的其他类似问题?
答案 0 :(得分:5)
使用_signIn = () => {
const fb = window.FB;
if(fb){
fb.getLoginStatus(response => {
if(!response) return;
if(response.status !== 'connected'){
fb.login(response => {
if(!response) return;
this.getCredentials(response.authResponse);
})
} else {
this.getCredentials(response.authResponse);
}
});
}else {
console.log("FB is not initiated correctly")
}
}
将非数字值强制转换为pandas.to_numeric
(熊猫在计算均值时默认会忽略),然后使用NaN
+ groupby
来分配最后的小组。
agg
df.Ct = pd.to_numeric(df.Ct, errors='coerce')
df.groupby(np.arange(df.shape[0]) // 2).agg({'Well': '-'.join, 'Ct': 'mean'}).fillna(0)