我有一个python数据框架,其中包含健康数据,参与者在时间点1、2和3出现。我有一个名为“BPMEDS”的列,其中有缺失的数据,其中很多是缺失的最后一个时间点(无论是1、2还是3)。BP药品的最后一个填充行位于每个空行的上方。因此,“randid”16799在第3期没有“bpmeds”,而在第2期有“bpmeds”,我只想复制上一个可用期间的值。每个参与者都有一个ID,因此该ID最多可以在数据集中显示3次。
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可用,那么我将不得不忽略这一点,然后再讨论它。
我想用每个参与者可用的最后一个观察来填写缺失的行。
我不知道从哪里开始。
for ind in df.index:
if df['PERIOD'][ind] != '1':
df['BPMEDS'][ind] = df.groupby(['RANDID']).fillna(method='ffill')这就是我尝试过的,我得到了一个值错误和类型错误。
发布于 2022-09-02 09:10:10
函数遍历数据集,并使用指定的值填充所有空行。
df = pandas.DataFrame({'A' :[0, 3, None, 10, 3, None], 'B‘:无,无,7.13,13.82,7,7,'C’:无,“潘达斯”,无,“潘达斯”,"Python","JavaScript"})
此方法涉及用计算的平均值替换缺失的值。当所涉及的列具有整数或浮点数据类型时,用平均值或中值填充缺失的数据是适用的。
#将每一列的平均值插入其缺失的行:
df.fillna(df.mean().round(1), inplace=True)# median:strong> df.fillna(df.median().round(1),inplace=True)打印(Df)
像对上面的平均值和中值一样,插入模态值并不能捕获整个DataFrame。但是您可以将它插入到特定的列中,例如,C列:
df['C'].fillna(df['C'].mode()[0], inplace=True)https://stackoverflow.com/questions/73565260
复制相似问题