2017-10-02 7 views
0

他のカテゴリで最も頻繁に値を持つPandasデータフレームのカテゴリ値の欠損値を記入したいと思います。例えば、pandasデータフレーム内の他のカテゴリ値に基づいてカテゴリ値の欠損値を埋め込む

 price  | product | type  
0 25   | coca  | softdrink 
1 94   | NaN  | juice  
2 57   | pepsi | softdrink  
3 62   | pepsi | softdrink  
4 70   | orange | juice  
5 50   | grape | juice  
6 60   | NaN  | softdrink  

まず、その結果

import pandas as pd 
import numpy as np 
data = {'type': ['softdrink', 'juice', 'softdrink', 'softdrink', 'juice','juice','juice'], 
    'product': ['coca', np.nan, 'pepsi', 'pepsi', 'orange','grape',np.nan], 
    'price': [25, 94, 57, 62, 70,50,60]} 
df = pd.DataFrame(data) 
df 

は、私は私が不足している製品を埋めたい

type  | product  
juice  | grape | 1  
      | orange | 1  
softdrink | pepsi  | 2  
      | coca  | 1  
Name: product, dtype: int64  

を取得するために

df.groupby('type')['product'].value_counts() 

としてGROUPBY使用します2番目の行は "ペプシ"(最も稀少)がカテゴリ「ジュース」の行6の欠損値を「ブドウ」にする。 カテゴリグループがなければ、私の解決策は列で最も頻繁に値を見つけて、この値を欠損値に割り当てることです。

コマンドの戻り値

df.groupby('type')['product'].value_counts() 

私が持っている製品+カテゴリノウハウ
df.groupby('type')['product'].value_counts()['softdrink']['pepsi'] 

によってアクセスすることができパンダシリーズですので、私は、タスクを完了するのに苦労

df['product'].fillna(df['product'].value_counts().index[0],inplace=True) 

最も頻繁に。使用

+0

dfをあなたは私のすべての書式設定を元に戻す保管しないでくださいことはできますか? –

答えて

2

IIUC

mode


データ入力

import pandas as pd 
import numpy as np 
data = {'type': ['softdrink', 'juice', 'softdrink', 'softdrink', 'juice','juice','softdrink'], 
    'product': ['coca', np.nan, 'pepsi', 'pepsi', 'orange','grape',np.nan], 
    'price': [25, 94, 57, 62, 70,50,60]} 
df = pd.DataFrame(data) 

溶液

df.groupby('type').product.transform(lambda x: x.fillna(x.mode()[0])) 

Out[28]: 
0  coca 
1  grape 
2  pepsi 
3  pepsi 
4 orange 
5  grape 
6  pepsi 
Name: product, dtype: object 

df['product']=df.groupby('type').product.transform(lambda x: x.fillna(x.mode()[0])) 
df 
Out[40]: 
    price product  type 
0  25 coca softdrink 
1  94 grape  juice 
2  57 pepsi softdrink 
3  62 pepsi softdrink 
4  70 orange  juice 
5  50 grape  juice 
6  60 pepsi softdrink 
+0

うわー!モード...本当にいいです。私はこれと似たようなものを計画していましたが、これほどいいところはありませんでした。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ感謝の男〜:) – Wen

関連する問題