首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用多个时点填充数据集中缺少的值,但我只想为每个参与者传递最后的观察结果?

如何用多个时点填充数据集中缺少的值,但我只想为每个参与者传递最后的观察结果?
EN

Stack Overflow用户
提问于 2022-09-01 06:52:04
回答 1查看 67关注 0票数 0

我有一个python数据框架,其中包含健康数据,参与者在时间点1、2和3出现。我有一个名为“BPMEDS”的列,其中有缺失的数据,其中很多是缺失的最后一个时间点(无论是1、2还是3)。BP药品的最后一个填充行位于每个空行的上方。因此,“randid”16799在第3期没有“bpmeds”,而在第2期有“bpmeds”,我只想复制上一个可用期间的值。每个参与者都有一个ID,因此该ID最多可以在数据集中显示3次。

代码语言:javascript
复制
 RANDID  BPMEDS  PERIOD
26   16799     0.0       1
27   16799     0.0       2
28   16799     NaN       3
29   19304     0.0       1
30   20375     0.0       1
31   20375     0.0       2
32   23727     1.0       1

如果有一个空的'bpmeds‘字段只有一个句点1可用,那么我将不得不忽略这一点,然后再讨论它。

我想用每个参与者可用的最后一个观察来填写缺失的行。

我不知道从哪里开始。

代码语言:javascript
复制
for ind in df.index:
    if df['PERIOD'][ind] != '1':
       df['BPMEDS'][ind] = df.groupby(['RANDID']).fillna(method='ffill')

这就是我尝试过的,我得到了一个值错误和类型错误。

EN

回答 1

Stack Overflow用户

发布于 2022-09-02 09:10:10

函数遍历数据集,并使用指定的值填充所有空行。

代码语言:javascript
复制
df = pandas.DataFrame({'A' :[0, 3, None, 10, 3, None], 

'B‘:无,无,7.13,13.82,7,7,'C’:无,“潘达斯”,无,“潘达斯”,"Python","JavaScript"})

此方法涉及用计算的平均值替换缺失的值。当所涉及的列具有整数或浮点数据类型时,用平均值或中值填充缺失的数据是适用的。

#将每一列的平均值插入其缺失的行:

代码语言:javascript
复制
df.fillna(df.mean().round(1), inplace=True)

# median:strong> df.fillna(df.median().round(1),inplace=True)打印(Df)

像对上面的平均值和中值一样,插入模态值并不能捕获整个DataFrame。但是您可以将它插入到特定的列中,例如,C列:

代码语言:javascript
复制
df['C'].fillna(df['C'].mode()[0], inplace=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73565260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档