簡體   English   中英

填寫缺失的行值 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.

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