![](/img/trans.png)
[英]Fill missing row values as an average of previous and next row in pandas dataframe
[英]Fill in missing row values in pandas dataframe
我有以下 dataframe 並想填寫缺失值。
mukey hzdept_r hzdepb_r sandtotal_r silttotal_r
425897 0 61
425897 61 152 5.3 44.7
425911 0 30 30.1 54.9
425911 30 74 17.7 49.8
425911 74 84
我希望每個缺失值都是與該 mukey 對應的值的平均值。 在這種情況下,例如,第一行缺失值將是對應於 mukey==425897 的 sandtotal_r 和 silttotal_r 的平均值。 pandas fillna 似乎無法解決問題。 有什么幫助嗎?
使用我剛剛學到的幾個問題......
僅供參考,這個解決方案仍然會留下NaN的任何'沒有'sandtotal_r'或'silttotal_r'的Mukey。
import pandas as pd
df = pd.read_clipboard()
df1 = df.set_index('mukey')
df1.fillna(df.groupby('mukey').mean(),inplace=True)
df1.reset_index()
mukey hzdept_r hzdepb_r sandtotal_r silttotal_r
0 425897 0 61 5.3 44.70
1 425897 61 152 5.3 44.70
2 425911 0 30 30.1 54.90
3 425911 30 74 17.7 49.80
4 425911 74 84 23.9 52.35
pandas groupBy方法將執行您想要的操作。 此方法允許您將 DataFrame 的元素按其 label 進行分組,然后對它們執行一些聚合 function。
df = pd.read_clipboard()
df1= df.set_index("mukey")
grouped_df = df.groupby("mukey").mean()
df1.fillna(grouped_df,inplace=True)
將索引設置為“mukey”是必不可少的。 如果沒有這一步,最終的DataFrame將不會發生變化。
有關如何使用 groupBy 的更多信息,另請參閱將 Object 拆分為組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.