[英]pandas Dataframe Replace NaN values with with previous value based on a key column
[英]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 數據:
你可以這樣做:
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.