第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何用兩個(gè)列分組值的中值替換數(shù)據(jù)框中的空值?

如何用兩個(gè)列分組值的中值替換數(shù)據(jù)框中的空值?

慕妹3242003 2022-04-23 21:50:27
我在 Python 中有一個(gè)數(shù)據(jù)框,其中包括個(gè)人在一周內(nèi)使用某些食物的頻率。我想清理我的數(shù)據(jù)框并用每個(gè)人使用的每個(gè)食物類別的中值頻率替換空值。如何用每個(gè)人的每個(gè)食物類別的 meidan 替換空值?user  ffq    food       food-category 1     1     apple         fruit 1     3     banana        fruit 1     2     tomato      vegetables 1   nan     carrot      vegetables 1     3     potato      vegetables 1    nan    peach        fruit 2     3     apple        fruit 2    nan    banana       fruit 2     2     tomato       vegetables 2     nan   carrot       vegetables 2     3   peach          fruit結(jié)果應(yīng)該是這樣的:user  ffq    food       food-category 1     1     apple         fruit 1     3     banana        fruit 1     2     tomato      vegetables 1 **2.5**   carrot      vegetables 1     3     potato      vegetables 1   **2**   peach        fruit 2     3     apple        fruit 2   **3**   banana       fruit 2     2     tomato       vegetables 2   **2**   carrot       vegetables 2     3     peach        fruit如果有人可以提供幫助,我將不勝感激
查看完整描述

2 回答

?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

我猜你想用組的平均值而不是中位數(shù)填充缺失值。我們可以使用.fillna()with.groupby()和.transform()函數(shù)來通過一行代碼完成此操作。首先,讓我們創(chuàng)建包含所需列的 DataFrame。


# Create a DataFrame

df = pd.DataFrame({'user':['1','1','1','1','1','1', '2', '2', '2', '2', '2'], 

                   'ffq':[1, 3, 2, np.nan, 3, np.nan, 3, np.nan, 2, np.nan, 3],

                   'food-category':['fruit', 'fruit', 'vegetables', 'vegetables', 

                                    'vegetables', 'fruit', 'fruit', 'fruit', 'vegetables', 

                                    'vegetables', 'fruit']})

我們現(xiàn)在可以使用所需的插補(bǔ)方法填充缺失值,例如均值、中位數(shù)或眾數(shù)。下面的插補(bǔ)是用平均值完成的,以獲得問題中提到的結(jié)果。


# Apply fillna function within each group

df['ffq'] = df.groupby(['user', 'food-category']).transform(lambda x: x.fillna(x.mean()))

    user   ffq   food-category

0   1      1.0   fruit

1   1      3.0   fruit

2   1      2.0   vegetables

3   1      2.5   vegetables

4   1      3.0   vegetables

5   1      2.0   fruit

6   2      3.0   fruit

7   2      3.0   fruit

8   2      2.0   vegetables

9   2      2.0   vegetables

10  2      3.0   fruit

該.transform()方法用于執(zhí)行特定于組的計(jì)算,在這個(gè)例子中是平均值,它返回一個(gè)類似索引的對(duì)象。有關(guān)詳細(xì)信息,請(qǐng)參閱用戶指南。


查看完整回答
反對(duì) 回復(fù) 2022-04-23
?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是你如何做到的。首先,我們需要對(duì)值進(jìn)行排序,以便在使用 groupby 時(shí)它們以正確的順序出現(xiàn)。接下來我們計(jì)算平均值,然后我們需要NaN用我們提取的序列填充 s。


df = df.sort_values(['user','food-category'])

srs = df.dropna().groupby(['user','food-category']).agg({'ffq':'mean'})['ffq']

srs.index = df[df['ffq'].isnull()].index

df['ffq'] = df['ffq'].fillna(value=srs)

結(jié)果


df.sort_index()

    user    ffq     food    food-category

0   1       1.0     apple   fruit

1   1       3.0     banana  fruit

2   1       2.0     tomato  vegetables

3   1       2.5     carrot  vegetables

4   1       3.0     potato  vegetables

5   1       2.0     peach   fruit

6   2       3.0     apple   fruit

7   2       3.0     banana  fruit

8   2       2.0     tomato  vegetables

9   2       2.0     carrot  vegetables

10  2       3.0     peach   fruit


查看完整回答
反對(duì) 回復(fù) 2022-04-23
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)