用 pandas 计算每个后续组的 2 行的平均值
Posted
技术标签:
【中文标题】用 pandas 计算每个后续组的 2 行的平均值【英文标题】:Calculate mean of each subsequent group of 2 rows with pandas 【发布时间】:2019-09-18 07:49:14 【问题描述】:我正在尝试计算所有数据框的每个后续组的 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
有什么方法可以解决这个问题或其他已经发布的类似问题吗?
【问题讨论】:
【参考方案1】:使用pandas.to_numeric
将非数字值强制转换为NaN
s(默认情况下,pandas 在计算平均值时会忽略该值),然后使用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)
Well Ct
0 A1-A2 0.0
1 A3-A4 41.2
2 B1-B2 42.5
【讨论】:
工作得很好!谢谢!以上是关于用 pandas 计算每个后续组的 2 行的平均值的主要内容,如果未能解决你的问题,请参考以下文章
如何计算 n 行的平均值并将答案粘贴到 pandas 列的下 n 行?
pandas计算dataframe数据行的均值(mean)实战:设置skipna=False则计算行均值时不会忽略NaN值