亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas 填充其他行中列中缺失的數據

Pandas 填充其他行中列中缺失的數據

小唯快跑啊 2023-07-18 15:32:53
我有一個如下所示的 df :df = pd.DataFrame({'id': ['a','b','c','d'],                   'ac' : ['123','223', np.nan, np.nan],                   'prev' : [np.nan, np.nan, 'a','b']})輸出:    id  ac   prev0   a   123  NaN  1   b   223  NaN  2   c   NaN  a  3   d   NaN  b對于 ac 為空,獲取 prev 的值,然后查找 id 列。使用 ac 列中的值填充空值。預期輸出:    id  ac   prev0   a   123  NaN1   b   223  NaN2   c   123  a3   d   223  b我該如何實現這一目標?謝謝。
查看完整描述

2 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

您可以使用此掩碼對列與列的值Series.isna使用布爾索引來創建布爾掩碼,基于:mapprevacid


m = df['ac'].isna()

df.loc[m, 'ac'] = df.loc[m, 'prev'].map(df.set_index('id')['ac'])

結果:


? id? ?ac prev

0? a? 123? NaN

1? b? 223? NaN

2? c? 123? ? a

3? d? 223? ? b


查看完整回答
反對 回復 2023-07-18
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

如果我理解正確,您希望使用“id”給出的值填充“ac”列的 nan 值,該值由“prev”列中的相應值指示。如果是這樣,您可以嘗試使用“id”作為索引,以便您可以使用 .loc 訪問您感興趣的行


import pandas as pd

import numpy as np


df = pd.DataFrame({'id': ['a', 'b', 'c', 'd'],

                   'ac': ['123', '223', np.nan, np.nan],

                   'prev': [np.nan, np.nan, 'a', 'b']})



df.set_index('id', inplace=True)

to_fill = df.loc[df['ac'].isnull()]

fill_with = df.loc[to_fill['prev'], 'ac'].copy()

fill_with = fill_with.values

df.loc[to_fill.index, 'ac'] = fill_with


最終結果是:


print(df)

     ac prev

id          

a   123  NaN

b   223  NaN

c   123    a

d   223    b

請注意,如果“id”列沒有重復值,則此代碼有效。希望我有幫助!


查看完整回答
反對 回復 2023-07-18
  • 2 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號