Pandas 基于dataframe中的其他类别值填充类别值的缺失值
我想用另一个类别上最频繁的值来填充Pandas数据框中类别值的缺失值。比如说,Pandas 基于dataframe中的其他类别值填充类别值的缺失值,pandas,Pandas,我想用另一个类别上最频繁的值来填充Pandas数据框中类别值的缺失值。比如说, 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],
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
导致
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
首先,我使用groupby作为
df.groupby('type')['product'].value_counts()
得到
type | product
juice | grape | 1
| orange | 1
softdrink | pepsi | 2
| coca | 1
Name: product, dtype: int64
我想用“百事可乐”(最不常见的)填充第二行缺失的产品,但用“葡萄”填充“果汁”类别第6行缺失的值。
如果没有分类组,我的解决方案是按列查找最频繁的值,并将该值分配给缺少的值
df['product'].fillna(df['product'].value_counts().index[0],inplace=True)
由于命令返回值,我很难完成任务
df.groupby('type')['product'].value_counts()
是熊猫系列,可通过
df.groupby('type')['product'].value_counts()['softdrink']['pepsi']
我如何知道哪个产品+类别使用频率最高。IIUC
使用模式
数据输入
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
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
哇!模式真不错。我正计划做一些类似的事情,但没有比这更好的了。你能不能不要一直撤销我所有的格式?