簡體   English   中英

使用基於 ID 列的另一行的值來估算 Pandas 數據框列

[英]Impute Pandas dataframe column with value from another row based on ID column

東風:

id   name 
0    toto                    
1    tata
0    NaN

我想根據 id 在第三行估算名稱列缺失值。 所需的數據框將是:

id   name 
0    toto                    
1    tata
0    toto

我做了以下事情:

df.loc[df.name.isna(), "name"] = df["id"].map(df["name"])

但它不工作。

import pandas as pd
df = pd.DataFrame({'id':[0,1,0],
              'name':['toto','tata',pd.NA]})

df = df[['id']].merge(df[pd.notna(df['name'])].drop_duplicates(),
                      how = 'left', 
                      on = 'id')
df

如果組中只存在一個值,您可以嘗試

df = df.groupby('id').apply(lambda g: g.ffill().bfill())
print(df)

   name
0  toto
1  tata
2  toto

或者將NaN排序到最后

df = (df.sort_values('name')
      .groupby('id').ffill()
      .sort_index())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM