[英]How to forward propagate/fill a specific value in a Pandas DataFrame Column/Series?
[英]How to filldown (forward fill) a filtered dataframe column in pandas
問題陳述:需要填寫過濾后的 dataframe。
我有一個很大的 dataframe。這里沒有顯示,但我在下面包含了一個虛擬 dataframe 作為示例。
我想要的唯一 Status/State 組合是 UP/GOOD 和 DOWN/BAD。
我的數據集目前有不需要的 DOWN/GOOD 組合,我正在嘗試通過填寫過濾后的 dataframe 將其更正為 DOWN/BAD。請就下面的代碼提出建議,它不起作用。 這個問題有幾個其他的解決方案,但我想要 filldown (.ffill) 方法。
謝謝!
未經過濾的數據集
過濾后的數據集:顯示關閉狀態
所需的解決方案
代碼:
"""This is a dummy dataframe"""
import pandas as pd
import numpy as np
dummydata=[["Up","Good"],["Up","Good"],["Up","Good"],["Down","Bad"],["Up","Good"],
["Down","Good"],["Down","Good"],["Down","Good"],["Up","Good"],["Up","Good"],
["Down","Bad"],["Up","Good"],["Up","Good"],["Up","Good"],["Up","Good"]]
df=pd.DataFrame(dummydata, columns=['Status','State'])
filt=df['Status']=="Down"
df2=df.loc[filt]
df2.loc[df2['State']=='Good','State']=""
df2.loc[df2.State=='','State']= np.nan
df2.loc[df2['State']=='','State']=df2['State'].ffill()
print(df,df2)
我當前的填充方法不起作用。 提供代碼。 任何幫助將不勝感激
這里不需要切片。
最簡單的方法是:
df2['State'] = df2['State'].replace('Good', np.nan).ffill()
Output:
Status State
3 Down Bad
5 Down Bad
6 Down Bad
7 Down Bad
10 Down Bad
用這個:
df.loc[df['Status']=='Down','State']='Bad'
df[df['Status']=='Down']
Status State
3 Down Bad
5 Down Bad
6 Down Bad
7 Down Bad
10 Down Bad
您可以使用條件直接過濾它們並分配它們。
代碼:
import pandas as pd
import numpy as np
dummydata=[["Up","Good"],["Up","Good"],["Up","Good"],["Down","Bad"],["Up","Good"],
["Down","Good"],["Down","Good"],["Down","Good"],["Up","Good"],["Up","Good"],
["Down","Bad"],["Up","Good"],["Up","Good"],["Up","Good"],["Up","Good"]]
df=pd.DataFrame(dummydata, columns=['Status','State'])
#Filter Status == Down and State == Good
df.loc[((df["Status"] == "Down") & (df["State"] =="Good")), "State"] = "Bad"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.