簡體   English   中英

如何通過匹配來自另一個數據幀熊貓的值來填充數據幀中的列的值

[英]How to fill in values for a column in a dataframe by matching values from another dataframe pandas

我是 Python 新手,正在使用 kaggle 泰坦尼克號數據集進行練習。

我正在嘗試通過使用具有相同票證的行來填充客艙功能的幾個缺失值。 也就是說,我想獲取重復機票及其相應艙位值的列表,並將空值替換為與同一張票對應的艙位值。

在我的方法中,我使用以下代碼創建了一個數據框,其中僅包含一次重復機票(假設機票有一個客艙值與之配套;非空),以為其分配一個客艙值。 這樣我就可以通過匹配來填充訓練集(maindf)中的客艙值。

ticket_dupl = maindf[(maindf.duplicated('Ticket')) & (maindf['Cabin'].notnull())][['Ticket','Cabin']].drop_duplicates('Ticket')

這給了我一個長度為 50 的數據幀,並保留了索引,這是前 7 行:

    Ticket  Cabin
88  19950   C23 C25 C27
124 35281   D26
137 113803  C123
193 230080  F2
195 PC 17569 B80
230 36973   C83
251 347054  G6

有沒有辦法通過匹配票行或索引來填充我的 maindf 中的一些客艙值,保留不匹配的票的值? 對於與我類似的問題,似乎無法從其他解決方案中理解。

另外,我想知道是否有更有效的方法來實現我的目標,而不是像我那樣創建數據框。 謝謝。

您可以按故障單分組以將具有匹配故障單的行組合在一起,並使用返回組中第一個非空值的 first_valid_index 填充空值。

df['Cabin'] = df.groupby('Ticket')['Cabin'].transform(lambda x: x.loc[x.first_valid_index()])

暫無
暫無

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

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