簡體   English   中英

根據 pandas dataframe 中的相鄰列將 NaN 值替換為特定文本

[英]Replace NaN values with specific text based on adjacent column in pandas dataframe

我的數據在其第一列中有一些 NaN 值。 要替換這些 NaN 值,我想查看下一列中的相鄰值並將特定值作為 replaceNaN。 這是 csv 數據:

,Release,SubRelease,ReleaseDate,TypeofRelease,Package
0,LTE,TL101,2017-09-27,Major Update,2.0.4
1,LTE,TL101,2017-09-26,Normal Update,3.1
2,NaN,TL209,2017-09-25,Major Update,3.2
3,5G,5GS,2017-09-25,Delivery,1.1
4,NaN,5GM,2017-09-24,Release,1.0
5,LTE,FL18A,2017-09-23,Normal Update,3.0

例如,在Release的第 3 行中有一個 NaN 值。 我想看看同一行的SubRelease列,說既然這里的值是“TL209”,我想把NaN換成值“LTE”。 同樣,如果SubRelease列中的值為“5G19”,我想用“5G”替換Release的 NaN。

我首先想到的是使用正則表達式,指定查看SubRelease列中的值是否包含或以文本“5G”開頭。 但我不知道如何實現這一點。 或者有沒有更好的方法?

更容易查看 csv 數據:

csv數據

你可以這樣做:

df["Release"] = df["Release"].fillna(df["SubRelease"])
df
>>>   Release SubRelease ReleaseDate  TypeofRelease Package
0     LTE      TL101  2017-09-27   Major Update   2.0.4
1     LTE      TL101  2017-09-26  Normal Update     3.1
2   TL209      TL209  2017-09-25   Major Update     3.2
3      5G        5GS  2017-09-25       Delivery     1.1
4     5GM        5GM  2017-09-24        Release     1.0
5     LTE      FL18A  2017-09-23  Normal Update     3.0

編輯我誤讀了這個問題,所以忘記了最后一步:

df = df.replace({"Release":{"TL209":"LTE", "5GM":"5G", "5GS":"5G", ...}})
>>>   Release SubRelease ReleaseDate  TypeofRelease Package
0     LTE      TL101  2017-09-27   Major Update   2.0.4
1     LTE      TL101  2017-09-26  Normal Update     3.1
2     LTE      TL209  2017-09-25   Major Update     3.2
3      5G        5GS  2017-09-25       Delivery     1.1
4      5G        5GM  2017-09-24        Release     1.0
5     LTE      FL18A  2017-09-23  Normal Update     3.0

要根據SubRelease中的值替換Release列中的所有 NaN,您可以找到例如所有“5G”子版本並首先替換這些 NaN。 如果有更多的條件,這些可以以相同的方式替換。 最后,將所有剩余的 NaN 替換為默認值(此處為“LTE”)。

這可以使用loc和適當的掩碼來完成:

df.loc[df['Release'].isna() & df['SubRelease'].str.contains('5G'), 'Release'] = '5G'
df = df.fillna('LTE')

結果:

  Release SubRelease ReleaseDate  TypeofRelease Package
0     LTE      TL101  2017-09-27   Major Update   2.0.4
1     LTE      TL101  2017-09-26  Normal Update     3.1
2     LTE      TL209  2017-09-25   Major Update     3.2
3      5G        5GS  2017-09-25       Delivery     1.1
4      5G        5GM  2017-09-24        Release     1.0
5     LTE      FL18A  2017-09-23  Normal Update     3.0

暫無
暫無

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

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